为什么在Hibernate 5中不推荐使用条件查询?

我们已经知道,在Hibernate 5中不推荐使用标准查询 。 它在以前版本的Hibernate中是如此有用的function。 它仍然比HQL表现更好。

那么它在Hibernate 5中被弃用的原因是什么?

此问题也不是这个问题的重复,因为我想知道标准查询弃用的原因。

这是从这里来的。

Hibernate提供了一个旧的,传统的org.hibernate.Criteria API,应该被认为是不推荐使用的。 没有function开发将针对这些API。 最终,特定于Hibernate的标准function将被移植为JPA javax.persistence.criteria.CriteriaQuery扩展。 有关org.hibernate.Criteria API的详细信息,请参阅Legacy Hibernate Criteria Queries。

我们弃用Criteria API代替JPA扩展支持。

考虑一下:

 CriteriaBuilder cb = entityManager.getCriteriaBuilder(); HibernateCriteria hc = cb.unwrap( HibernateCriteria.class ); ... query.where( hc.someAwesomeThing( ... ) ); List entities = entityManager.createQuery( query ).getResultList(); 

与评论相反,我们打算继续提供特定于Hibernate的function,但我们希望通过标准API引入这些function,而不是尝试管理两个非常不同的API,这些API旨在实现同步互补。