您的位置:首页 > 其它

关于Hibernate5.2之后createCriteria(),@deprecated(过时的)

2017-11-11 15:56 507 查看

发现问题

今天学到Hibernate的查询所有对象Criteria,发现获取Criteria的方法createCriteria()已经过时

/**
* Create {@link Criteria} instance for the given class (entity or subclasses/implementors).
*
* @param persistentClass The class, which is an entity, or has entity subclasses/implementors
*
* @return The criteria instance for manipulation and execution
*
* @deprecated (since 5.2) for Session, use the JPA Criteria
*/
@Deprecated
Criteria createCriteria(Class persistentClass);


Hibernate推荐使用JPA的规范获取Criteria

解决问题

在百度之后,发现国内很少有这样的参考资料,或者解决办法,于是去了Google.在stack flow上看到了解决办法

1.创建session对象(因为配置文件加载不一致,我这里默认获取到session)

Session session = factory.openSession();


2.创建CriteriaBuilder对象

CriteriaBuilder build = session.getCriteriaBuilder();


3.获取CriteriaQuery

CriteriaQuery<User> criteria = builder.createQuery(User.class);


4.指定根条件

criteria.from(User.class);


5.执行查询

Query<User>criteria.createQuery(criteria);


6.返回查询结果集

List<User> resultList = query.getResultList();


总结

之前用Criteria查询所有是这样的

List<User> categories = session.createCriteria(User.class).list();


因为用了JPA的规范,所以变成了上述这样,建议大家遵循规范,追赶时代潮流

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: