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

发现问题

今天学到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.创建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的规范,所以变成了上述这样,建议大家遵循规范,追赶时代潮流


Hibernate5.2中已不推荐使用Criteria,而是使用基于JPA规范的CriteriaQuery查询 

Hibernate提供了一个较旧的遗留org.hibernate.CriteriaAPI,应被视为不推荐使用。没有功能开发将针对这些API。  

最终,特定于Hibernate的标准功能将被移植到JPA的扩展javax.persistence.criteria.CriteriaQuery。 

有关org.hibernate.CriteriaAPI的详细信息,请参阅传统Hibernate条件查询。  

上述来自 Hibernate5.2.10官方文档

简单的使用流程如下

public List<Custom> findByAddressLike(String address) {
        //这里使用JPA规范的CriteriaQuery
        CriteriaBuilder crb=currentSession().getCriteriaBuilder();
        CriteriaQuery<Custom> crq=crb.createQuery(Custom.class);
        Root<Custom> root=crq.from(Custom.class);
        crq.select(root);
        crq.where(crb.like(root.get("address"),address));
        return currentSession().createQuery(crq).getResultList();
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值