1

是否有能够从 sql 查询开始生成 java hibernate 代码的工具?(就像休眠的相反,从java代码生成选择)它将帮助我将所有查询移动到休眠!

我的意思是,如果我有一个带有如下参数的选择:

 select ta.id label, ta.nume value
    from ar 
    left outer join ta ta on idp = ta.ID
    where ta.status = 1
    and (dp = 0 OR ps = idps_)
    and status = 1
order by ta.nume;

最终获得这样的东西:

 DetachedCriteria criteria = DetachedCriteria.forEntityName("ar");
    criteria.createAlias("ta", "ta", Criteria.LEFT_JOIN);
    criteria.add(Restrictions.eq("ta.status", 1));
    Criterion eq = Restrictions.eq("ps.id", idps_);
    Criterion isZero = Restrictions.eq("dp.id", 0);
    Criterion or = Restrictions.or(eq, isZero);
    criteria.add(or);
    criteria.add(Restrictions.eq("status", 1));
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.property("ta.id"), "value");
    projectionList.add(Projections.property("ta.nume"), "label");
    criteria.setProjection(Projections.distinct(projectionList));
    criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
    criteria.addOrder(Order.asc("ta.nume"));

或者使用地图作为输出的类似东西......

向工具提供我存储实体/bean与表的映射的路径(或bean的路径,如果bean被注释)

4

1 回答 1

0

您拥有 HQL,它是一种与 Hibernate 一起使用的类似 SQL 的方言。您使用实体中的字段名称而不是表中的字段名称。它支持连接等。

事实上,Criteria API 对连接的支持非常有限(至少上次我尝试使用过),而且我已经完成了几次从 Criteria API 到 HQL 的所有内容的重写,所以我现在只需将 Criteria API 当作没有选择。

在 HQL 中,您还可以在 SELECT 和 WHERE 部分中使用 SQL 函数,这些函数是嵌入的和您自己编写的。

于 2012-05-23T14:16:39.293 回答