1.由于session.createCriteria()已经过时然后看了下hibernate的例项找到了此种方法。
session.beginTransaction();
//注意导入的包是import javax.persistence.criteria.CriteriaQuery;
CriteriaQuery<Student> criteriaQuery = session.getCriteriaBuilder().createQuery(Student.class);
//criteriaQuery 对象可以添加各种查询条件和关联条件等等
List<Student> list = session.createQuery(criteriaQuery).getResultList();
官方文档给出了几句话:参考(https://stackoverflow.com/questions/38448195/why-is-criteria-query-deprecated-in-hibernate-5)
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.
我也不太懂然后用有道翻译下大致意思就是下面这样。
最终,Hibernate-specific标准特性将移植作为JPA javax.persistence.criteria.CriteriaQuery扩展。
关于org . hibernate的详细信息。Criteria API,查看遗留Hibernate Criteria查询。
可以说Criteria标准化查询差不多都转到使用Jpa包了
2.session.createSQLCriteria()方法也过时了,当然可以用session.createNativeCriteria()方法来代替。