【发布时间】:2012-05-30 00:28:59
【问题描述】:
是否有工具能够从 sql 查询开始生成 java hibernate 代码? (就像 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 被注释)
【问题讨论】:
-
鉴于语法的接近性,将 SQL 转换为 HQL 会容易得多。
-
我不明白你为什么要这样做; hibernate 无论如何都会把它变成 sql
-
是的,我可以使用 HQL,但我的想法是尽可能使用面向对象的方法……而 jpa 似乎是最好的方法……所以我想使用 jpa……但似乎我现在绑定到 hql....
标签: java sql hibernate reverse-engineering