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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tangyaya8/article/details/78506975

发现问题

今天学到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

解决问题

  1. 在百度之后,发现国内很少有这样的参考资料,或者解决办法,于是去了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的规范,所以变成了上述这样,建议大家遵循规范,追赶时代潮流

阅读更多

没有更多推荐了,返回首页