回答
它们并不相互排斥,您可以同时使用两者。预测通常用于某些标准的上下文中。
简而言之,Hibernate Projections用于仅查询您使用Criteria查询的实体或实体组的属性子集。您还可以使用Projections来指定distinct
子句和聚合函数,如max
,sum
等。这就像参考哪个您正在提取的数据。就像修改SQL查询中的select
子句一样。
Hibernate Criteria用于定义数据必须满足的条件才能被选中。这就像是指如何是你提取的数据。就像修改SQL查询的from
和where
子句一样。
注意,这如何和这是并不完全正确,它只是旨在帮助OP的方向。例如,您可以更改其中您要提取的数据,例如createCriteria(String associationPath)
。
我建议你看看这篇文章Hibernate: Criteria Queries in Depth
投影处于“org.hibernate.criterion”包给出的接口,预测是在同一个包中给出的类,其实投影是一个接口, Projections是一个类,是一个生产投影对象的工厂。
在Projections类中,我们有所有静态方法,并且此类的每个方法都返回Projection接口对象。
如果我们想添加一个投影对象的标准,然后我们需要调用一个方法setProjection()
记住,同时加入投影对象的标准,就可以一次添加一个对象。这意味着如果我们添加第二个投影对象,那么这第二个将覆盖第一个(第一个不会工作),所以一次只能有一个投影对象到条件对象
使用条件,如果我们想要加载从数据库中部分对象,那么我们就需要创造财产的投影对象,如果再加上多个投影到标准则添加的最后一个投影将被视为执行看到从数据库
Criteria crit = session.createCriteria(Products.class);
crit.setProjection(Projections.proparty("proName"));
List l=crit.list();
Iterator it=l.iterator();
while(it.hasNext())
{
String s = (String)it.next();
// ---- print -----
}
加载中...
Criteria crit = session.createCriteria(Products.class);
Projection p1 = Projection.property("proName");
Projection p2 = Projection.property("price");
crit.setProjection(p1):
crit.setProjection(p2):
List l=crit.list();
这是如何回答这个问题的? – 000
链接到原始http://www.java4s.com/hibernate/working-with-hibernate-projections-in-criteria/ –
个预测是用于执行聚合操作,并获得一列的查询,但有限制,我们可以访问ROW但有凸起我们可以访问整个COLUMN
EX -
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();
}
}
在上面例如我使用投影调用来将投影属性“名称”添加到条件。它返回温彻斯特温彻斯特温彻斯特温彻斯特,这是在表中的姓氏列。
输出=
休眠:从学生选择this_.last_name作为y0_ THIS_ 温彻斯特温彻斯特 温彻斯特 温彻斯特
注 - 我们可以,如果我们只添加一个投影,添加超过1个投影前一个将被覆盖。如果你想添加多个投影,你会NEDD ProjectionList类
一部开拓创新的表 -
- 1. Hibernate genericDao投影
- 2. 如何使用Hibernate SQL投影查询?
- 3. Hibernate标准投射投影
- 4. Hibernate Search的投影 - StaticAliasToBeanResultTransformer
- 5. 使用MATLAB投影矩阵反投影
- 6. 如何在Hibernate中使用投影获得POJO响应?
- 7. ReactiveMongo:如何使用投影
- 8. 投影使用pyproj
- 9. NHibernate的投影:如何获得使用标准API与投影
- 10. Hibernate的标准+投影没有结果
- 11. 使用Hibernate Criteria投影限制选定字段
- 12. 使用摘录投影时忽略@JsonBackreferenceProject
- 13. 使用find()方法投影时出错
- 14. 如何将Android手机实时投影到投影仪?
- 15. 通过hibernate投影创建报表时HQL查询的错误
- 16. MKMapView使用什么投影?
- 17. NHibernate的投影使用SqlQuery
- 18. SortedDictionary投影使用linq
- 19. 投影使用MongoDB的
- 20. YQL列投影使用XPATH
- 21. SpringData MongoDB使用投影
- 22. 在使用某些投影时使用Basemap.contour()时发生IndexError
- 23. 如何在java中使用mongodb $投影
- 24. 如何使用GDAL投影shapefile ogr2ogr
- 25. 如何在Oracle中使用投影sp
- 26. 如何在GAE上使用投影?
- 27. 如何在TileMill中使用Equirectangular投影?
- 28. 如何在Mongoid中使用投影?
- 29. 如何使用透视投影矩阵?
- 30. 如何使用纯sql表达投影?
它是有用的计数() - >收益率(次数)session.createCriteria( “书”)setProjection(Projections.rowCount())uniqueResult()。; –