JPA 类型安全的查询

//编写类型安全的查询
//通过EntityManager或EntityManagerFactory的getCriteriaBuilder()创建 QueryBuilder的一个实例
//QueryBuilder不仅是 CriteriaQuery的工厂,同时也是查询表达式的工厂
CriteriaBuilder cb  = em.getCriteriaBuilder();
//在构造 CriteriaQuery时,可以传入各种结果类型参数 —— 从持久化实体(比如 SystemUser.class)到形式更加灵活的 Object[]。
CriteriaQuery<SystemUser> cq = cb.createQuery(SystemUser.class);
//CriteriaQuery从SystemUser.class查询,返回Root<SystemUser> root实例
//Root是一个查询表达式,它表示持久化实体的范围,这类似于 JPQL 或 SQL 查询的 FROM子句
//Root每个表达式都是泛型的,如Path<Integer> path = root.get("age")
Root<SystemUser> root = cq.from(SystemUser.class);
//查询表达式路径SystemUser.age
Path<Integer> path = root.get("age");
//谓词
Predicate predicate = cb.gt(path, 100);
//设置where子句
cq.where(predicate);
//通过EntityManager创建一个可执行查询,参数为CriteriaQuery
//这类似于构造一个输入为 JPQL 字符串的可执行查询,但是由于输入 CriteriaQuery包含更多的类型信息,所以得到的结果是 TypedQuery
TypedQuery<SystemUser> query = em.createQuery(cq);
List<SystemUser> list = query.getResultList();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值