正如我们已经知道的那样,Hibernate 5中的标准查询已被弃用.在以前的Hibernate版本中,这是一个非常有用的功能.它仍然比HQL表现更好.
那么它在Hibernate 5中被弃用的原因是什么呢?
而且这个问题不是this question的重复,因为我想知道标准查询的弃用原因.
这是从here.
Hibernate offers an older,legacy
org.hibernate.Criteria
API which
should be considered deprecated. No feature development will target
those APIs. Eventually,Hibernate-specific criteria features will be
ported as extensions to the JPA
javax.persistence.criteria.CriteriaQuery
. For details on the
org.hibernate.Criteria
API,see Legacy Hibernate Criteria Queries.
解决方法
我们不赞成使用Criteria API代替JPA扩展支持.
考虑这个:
CriteriaBuilder cb = entityManager.getCriteriaBuilder(); HibernateCriteria hc = cb.unwrap( HibernateCriteria.class ); ... query.where( hc.someAwesomeThing( ... ) ); List<SomeEntity> entities = entityManager.createQuery( query ).getResultList();
与意见相反,我们打算继续提供Hibernate特定的功能,但是我们希望通过标准API来介绍这些功能,而不是尝试管理保持两个非常不同的同步的互补API.