何时使用Hibernate投影?
我对Hibernate的预测和标准有点困惑。 何时使用预测以及何时使用标准?
请帮帮我。 谢谢!
他们不是相互排斥的,你可以同时使用两者。 预测通常用于某些标准的上下文中。
简单来说,Hibernate Projections用于仅查询使用Criteria查询的实体或实体组的一部分属性。 您还可以使用Projections来指定distinct
子句和聚合函数,如max
, sum
等等。 这就像是指你正在提取哪些数据。 像修改SQL查询中的select
子句一样。
Hibernate Criteria用于定义数据必须满足的条件才能被选中。 这就像是指你如何提取数据。 就像修改SQL查询的from
和where
子句一样。
请注意,这是如何以及哪个不是严格正确的,这只是一个旨在帮助OP的方向。 例如,您可以使用createCriteria(String associationPath)
更改要提取的数据。
我build议看看这篇文章hibernate:条件查询深入
投影是“org.hibernate.criterion”包中给出的一个接口,Projections是一个在同一个包中给出的类,实际上Projection是一个接口,Projections是一个类,是投影对象的工厂。
在Projections类中,我们有所有的静态方法,这个类的每个方法都返回Projection接口对象。
如果我们想要将一个Projection对象添加到Criteria,那么我们需要调用一个方法setProjection()
请记住,在将投影对象添加到条件的同时,可以一次添加一个对象。 这意味着如果我们添加第二个投影对象,那么这第二个将覆盖第一个(第一个不会工作),所以一次只能有一个投影对象到标准对象
使用标准,如果我们想从数据库中加载部分对象,那么我们需要为要从数据库加载的属性创build一个投影对象
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();
- 如何在Hibernate 4中configuration日志来使用SLF4J
- 冬眠4和约达时间
- CreateProcess error = 206,运行main()方法时文件名或扩展名太长
- session.connection()在Hibernate上被弃用?
- session.flush()在Hibernate中有什么用处
- javax.validation.ValidationException:HV000183:无法加载“javax.el.ExpressionFactory”
- 同步静态方法在Java中如何工作?
- Hibernate,@SequenceGenerator和allocationSize
- 在纯JPA设置中获取数据库连接