JPA查询之Specification以及HQL、SQL查询
1、Specification
-
//查询条件List
-
List<Predicate> predicateList = new ArrayList<Predicate>();
-
-
Specification specification = new Specification() {
-
@Override
-
public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
-
//root即是Join<>内部第一个泛型的类型,意思就是用SkuProduct与Picture通过SkuProduct的pictures左联
-
Join<SkuProduct,Picture> skuProductPictureJoin = root.join("pictures",JoinType.INNER);
-
//添加第1个查询条件:SkuProduct的code等于skuProduct.getCode(),然后将这个criteriaBuilder的条件添加到predicateList
-
predicateList.add(criteriaBuilder.equal(root.get("code"),skuProduct.getCode()));
-
//添加第2个条件
-
predicateList.add(criteriaBuilder.notEqual(skuProductPictureJoin.get("pictureType"),0));
-
//返回
-
return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()]));
-
}
-
};
-
-
//重要说明:Specification不支持右连接!
-
//Specification specification = new Specification() {
-
// @Override
-
// public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
-
// Join<Picture,SkuProduct> skuProductPictureJoin = root.join("pictures",JoinType.RIGHT);
-
// predicateList.add(criteriaBuilder.notEqual(root.get("pictureType"),0));
-
// predicateList.add(criteriaBuilder.equal(skuProductPictureJoin.get("code"),skuProduct.getCode()));
-
// return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()]));
-
// }
-
//};
-
-
List<SkuProduct> results = skuProductRepository.findAll(specification);
-
if(results!=null){
-
results.stream().forEach(result->{
-
System.out.println(result);
-
});
-
}
2、HQL
-
@Query(value = "SELECT p FROM Picture p WHERE p.code= :code")
-
List<Picture> findByPicture(@Param(value = "code") String code);
3、SQL
-
@Query(value = "SELECT p.* FROM picture p LEFT JOIN sku_product_pictures sp_p ON p.id=sp_p.pictures_id LEFT JOIN sku_product sp ON sp_p.sku_product_id=sp.id WHERE sp.code= :code AND p.picture_type=0",nativeQuery = true)
-
List<Picture> findBySkuProductCodeAndPicture(@Param(value = "code") String code);
-
@Query(value = "SELECT p.* FROM picture p LEFT JOIN sku_product_pictures sp_p ON p.id=sp_p.pictures_id LEFT JOIN sku_product sp ON sp_p.sku_product_id=sp.id WHERE sp.code=?1 AND p.picture_type=?2",nativeQuery = true)
-
List<Picture> findSkuProductCodeAndPicture(String code,int pictureType);
原文地址:https://blog.csdn.net/trusause/article/details/78672595
JPA查询之Specification以及HQL、SQL查询的更多相关文章
- SAP 查询分析器,查询报表自动生成,SQL查询测试实现说明(转)
在日常的SAP开发和应用中,经常需要通过查询SAP数据表来处理日常业务,比如:数据对账.报表SQL测试.SAP查询功能开发等.通过开发SAP查询分析器,SAP实施和开发人员,可以在较短的时间内查询到需 ...
- Hibernate SQL查询 addScalar()或addEntity()
本文完全引用自: http://www.cnblogs.com/chenyixue/p/5601285.html Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原 ...
- Hibernated的sql查询
记录一下学习Hibernate的心得 1.为什么HIbernate会支持原生态的sql查询? HQL查询语句虽然方便我们查询,但是基于HQL的查询会将查询出来的对象保存到hibernate的缓存当中, ...
- Hibernate5.2之原生SQL查询
Hibernate5.2之原生SQL查询 一. 介绍 在上一篇博客中笔者通过代码的形式给各位读者介绍了Hibernate中最重要的检索方式--HQL查询.在本博文中笔者将向各位读者介绍Hiberna ...
- SQL查询 addScalar()或addEntity()
Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该 ...
- 13.hibernate的native sql查询(转自xiaoluo501395377)
hibernate的native sql查询 在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hi ...
- Hibernate 的原生 SQL 查询
Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取 ...
- Hibernate SQL查询 addScalar()或addEntity()【转】
本文完全引用自: http://www.cnblogs.com/chenyixue/p/5601285.html Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原 ...
- hibernate的native sql查询
在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hibernate推荐的HQL查询语句呢?这是因为HQ ...
随机推荐
- C++ 浮点数 为 0 的判断
- JS黑科技
1.论如何优雅的取随机字符串 Math.random().toString(16).substring(2) // 13位 Math.random().toString(36).substring(2 ...
- 学习iOS设计--iOS8的颜色、文字和布局学习
在去年,Apple针对新时代用户彻底更新了其设计语言.现在的设计语言相对之前大为简化,能够让设计师将精力集中到动画和功能上,而不是繁复的视觉细节上. 很多人都曾问过我:设计应当如何入门?成为一名优秀设 ...
- sed 命令用法
Sed:对文件进行编辑操作,对象是行.操作后在屏幕输出结果.如果要直接修改则加-i命令-f filename: 执行某文件内的sed命令-n 只显示被修改的那一行 如文件test内容:Letyou a ...
- 6.12号整理(h5新特性-图片、文件上传)
<input type="file" id='myFile' multiple> <ul> <li> <img src="&qu ...
- Balanced Binary Tree 判断平衡二叉树
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- UNP服务器设计范式总结
一:客户端 本章总结的服务器程序设计范式,使用同一个客户端程序进行测试.个连接.使用的命令如下: client 206.62.226.36 8888 5 500 4000 二:结论 上图测量 ...
- 微信小程序入门到实战(1)-基础知识
1.微信小程序介绍 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. 1.1. 为什么是微信 ...
- 16.libgdx根据配置文件生成布局(未完)
思路: screen分为普通和复杂两种,普通的功能大部分是页面跳转以及简单的crud数据,复杂的单独弄出来 跳转普通的screen,直接根据配置文件调整设置 <layouts> <l ...
- mysql字段中提取汉字,去除数字以及字母
如果只是删除尾部的中文,保留数据,可以用以下的简单方式 MySQL as num; +------+ | num | +------+ | +------+ DELIMITER $$ DROP FUN ...