red*_*ddy 41 hibernate hibernate-criteria nhibernate-projections
我对Hibernate的预测和标准有点困惑.何时使用预测以及何时使用标准?
请帮我.谢谢!
Xav*_*ica 82
它们不是互斥的,你可以同时使用它们.预测通常用于某些标准的背景下.
简而言之,Hibernate Projections用于仅查询您使用Criteria查询的实体或实体组的属性的子集.您还可以使用Projections指定distinct子句和聚合函数max,sum等等.这就像指哪你获取数据.就像修改selectSQL查询中的子句一样.
Hibernate Criteria用于定义数据必须满足的条件才能被选中.这就像提到如何是你获取数据.就像修改SQL查询的from和where子句一样.
请注意,这个怎么样,哪个不是严格正确的,它只是一个旨在帮助OP的方向.你可以改变它你与提取数据createCriteria(String associationPath)的实例.
我建议看一下这篇文章Hibernate:Criteria Queries in Depth
投影用于执行聚合操作并获得单列查询,使用限制我们可以访问一行,但使用投影我们可以访问整个列
前任 -
public static void main(String[] args) {
SessionFactory factory = new Configuration().configure().addAnnotatedClass(Student.class).buildSessionFactory();
Session session = factory.getCurrentSession();
try {
session.beginTransaction();
Criteria c = session.createCriteria(Student.class);
Projection p = Projections.property("lastName");
List<String> students = c.setProjection(p).list();
for(String s:students)
System.out.println(s);
session.getTransaction().commit();
session.close();
} finally {
factory.close();
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我使用投影调用将投影属性“名称”添加到条件中。它返回 winchester winchester winchester winchester ,它是表中的 lastName COLUMN。
输出 =
Hibernate: select this_.last_name as y0_ from student this_ winchester winchester winchester winchester
注意 -我们只能添加一个投影,如果我们添加超过 1 个投影,则前一个投影将被覆盖。如果您想添加多个投影,您将需要 ProjectionList 类
原表 -
| 归档时间: |
|
| 查看次数: |
80054 次 |
| 最近记录: |