eclipse学习(第三章:ssh中的Hibernate)——9.Hibernate里面的标准查询
前言(建议看一下有版本差距)
本文参考自https://www.w3cschool.cn/hibernate/ugov1ie8.html后做的一个实践日志记录。
旧版本的话,你直接这么使用是没有任何问题的。
我这里举个最简单的例子吧,直接创建即可,如果就可以往里面添加参数处理了。
Criteria c = session.createCriteria(Address.class);
List<Address> l = c.list();
但是如果你换了版本,这个hibernate版本是在Hibernate5.2之后就会出现了已弃用的标志,要改为如下情况。
//创建CriteriaBuilder对象
CriteriaBuilder bulider = session.getCriteriaBuilder();
//创建对应实体类的CriteriaQuery对象
CriteriaQuery<Address> criteriaQuery = bulider.createQuery(Address.class);
//通过CriteriaQuery对象设置条件,这里是设置根条件
Root<Address> addressRoot = criteriaQuery.from(Address.class);
//通过session创建查询语句
Query q = session.createQuery(criteriaQuery);
//获取查询结果
List<Address> a = q.getResultList();
如果你使用已弃用的方法的话,会有这个输出
WARN: HHH90000022: Hibernate's legacy org.hibernate.Criteria API is deprecated; use the JPA javax.persistence.criteria.CriteriaQuery instead
我要说一句,这个标准查询是用来做查询处理的
标准查询
其实就是将一般的查询条件抽取成方法,替换了写hql的过程,其实都很类似的。不过我觉得写个hql其实比写这个好,起码省略了几行代码…
标准查询的部分示例说明
1、单条件查询(这里是使用新方法的)
新方法的话目前我就只能弄到这里了,抱歉,实力不够,弄不上去,其实还能弄一些更多示例的,不过看网址也行了https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#criteria-typedquery-entity
List<Address> addressList = null;
try {
transaction = session.beginTransaction();
//通过session获取CriteriaBuilder
Crit