表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);
答案 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