使用Criteria HQL从多个POJO获取值

时间:2013-06-26 09:15:48

标签: hibernate hql hibernate-criteria

表A列

Id,Quantity,Name

表B栏

Id,Order_Date,A_Id

是否有人知道如何编写Criteria查询以从多个表/ POJO中获取值

Select a.*,b.Order_Date from A a,B b where a.Id=b.A_Id

所以最终结果必须像Id,Quantity,Name,A_Id

我刚刚开始学习Hibernate,我只知道从一个表/ POJO中获取值

 Criteria crit = this.getSession().createCriteria(A.class);

1 个答案:

答案 0 :(得分:3)

有以下两种方法:

<强> 1。使用内部联接B返回A的POJO。

Criteria criteria = session.createCriteria(A.class);
criteria.setFetchMode("b",FetchMode.JOIN);
criteria.add(Restrictions.eq("id",a.id));
A returnObjA = criteria.uniqueResult();

以上是您希望拥有整个POJO而不仅仅是POJO的几个实体。

<强> 2。应用投影:

如果您只想要B的ID,请告诉我们。

ProjectionList p1=Projections.projectionList();
p1.add(Projections.property("balias.id"));
Criteria criteria = session.createCriteria(A.class);
criteria.createAlias("b","balias");
criteria.add(Restrictions.eq("id",a.id));
criteria.setProjection(p1);
List<Long> bidList = criteria.listResult();

另外,如需进一步参考,您可以浏览以下链接。 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/tutorial.html