正如我们所知,标准查询已在 Hibernate 5 中弃用。它在以前版本的Hibernate中是如此有用的功能。 它仍然比HQL表现更好。
那么 Hibernate 5 中它被弃用的原因是什么?
此问题也不是this question的重复,因为我想知道标准查询弃用的原因。
这是here.
Hibernate提供较旧的遗留
org.hibernate.Criteria
API 应被视为已弃用。没有功能开发的目标 那些API。最终,Hibernate特定的标准功能将是 移植为JPA的扩展javax.persistence.criteria.CriteriaQuery
。有关的详细信息org.hibernate.Criteria
API,请参阅旧版Hibernate条件查询。
答案 0 :(得分:11)
我们弃用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同步互补。