为什么条件查询在 Hibernate 5 中被弃用?

2022-09-01 05:29:23

正如我们已经知道的,条件查询Hibernate 5中已弃用。在以前版本的Hibernate中,这是一个非常有用的功能。而且它仍然比HQL表现得更好。

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

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

这是从这里开始的。

Hibernate提供了一个较旧的遗留API,应该被认为是不推荐使用的。任何功能开发都不会针对这些 API。最终,特定于Hibernate的标准功能将作为JPA的扩展移植。有关 API 的详细信息,请参阅旧版休眠条件查询。org.hibernate.Criteriajavax.persistence.criteria.CriteriaQueryorg.hibernate.Criteria


答案 1

我们将弃用 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,这两个API旨在互补同步。


答案 2

推荐