JPA的一些坑
推荐一篇比较好的介绍JPA的文章:使用 Spring Data JPA 简化 JPA 开发
JPA坑1:不支持Limit查询
JPA是不支持Limit分页查询,而我们有时又因为某些原因不想用JPA提供的分页功能,或者他提供的分页功能还不能满足我们特定的需求,那么就需要自定义我们的查询,方法如下:
-
/**
-
*
-
* ClassName: ADTemplateDaoSpecific <br/>
-
* Reason: TODO 该接口为模板的CRUD操作的自定义特制接口. <br/>
-
* date: 2015年7月6日 上午10:12:43 <br/>
-
*
-
* @author whc
-
* @version 1.0
-
* @since JDK 1.8
-
*/
-
interface ADTemplateDaoSpecific{
-
/**
-
*
-
* findAllByPageNum:根据分页查询模板资料. <br/>
-
*
-
* @author whc
-
* @param start
-
* @param end
-
* @return
-
* @since JDK 1.8
-
*/
-
public List<ADTemplate> findAllThroughPageNum(int start,int end) ;
-
}
-
/**
-
*
-
* ClassName: ADTemplateDaoSpecificImpl <br/>
-
* Reason: TODO 模板的CRUD操作的自定义特制接口的实现类. <br/>
-
* date: 2015年7月9日 下午3:53:43 <br/>
-
*
-
* @author whc
-
* @version 1.0
-
* @since JDK 1.8
-
*/
-
@Repository
-
class ADTemplateDaoImpl implements ADTemplateDaoSpecific{
-
-
@PersistenceContext
-
private EntityManager entityManager;
-
/**
-
* TODO 分页查询.
-
* Ps:JPA不支持limit关键字
-
* @see com.iot.fileDownLoad.dao.ADTemplateDaoSpecific#findAllByPageNum(int, int)
-
*/
-
public List<ADTemplate> findAllThroughPageNum(int start, int end) {
-
StringBuffer sql = new StringBuffer("from ADTemplate where isDelete = '0'");
-
-
javax.persistence.Query query = entityManager.createQuery(sql.toString());
-
-
query.setFirstResult(start);
-
query.setMaxResults(end);
-
return query.getResultList();
-
}
-
}
注意,此时需要使用@PersistentContext注解注入EntityManager。然后在实现类中我们就可以利用它来实现分页。
JPA坑2:函数的命名必须规范
可以知道,JPA的原理主要是靠函数的命名。所以就要求我们的DAO层函数名字十分的规范,注意点有2:
public List<TemplatePath> getTemplatePathByTemplateId(@Param("id")int id);
这样的名字就可以知道是根据id来查询。
JPA的一些坑的更多相关文章
- spring data jpa碰到的坑
1.不能从别的类的repository那里 执行另一个类的sql,这样映射会失败. 2.有entity,就要有repository,并且还要有id注解 3.还要多表联查未测试,估计要用map去映射出来 ...
- 工具篇-Spring boot JPA多数据源
写这篇博文是因为这个东西坑太多,首先说明下边实现的多数据源不是动态切换的,应该算是静态的. 坑一.pom文件 pom中spring boot以及mysql connector的版本一定要注意. < ...
- SpringBoot系列——Spring-Data-JPA
前言 jpa是ORM映射框架,更多详情,请戳:apring-data-jpa官网:http://spring.io/projects/spring-data-jpa,以及一篇优秀的博客:https:/ ...
- Rest风格中关于JPA使用懒加载的坑
公司最近使用的ORM框架是JPA实现产品使用的是hibernate,曾经看过一篇博客上面说的是如果团队里面没有一个精通hibernate的人,那么最好不要使用它,我现在是深刻的体会到了.但是使用什么框 ...
- Spring MVC+Hibernate JPA搭建的博客系统项目中所遇到的坑
标签: springmvc hibernate 2016年12月21日 21:48:035133人阅读 评论(0) 收藏 举报 分类: Spring/Spring MVC(6) Hibernate ...
- Java Data JPA +hibernate 保存或者是查询遇到的坑
由于项目需求,接触了Java Data JPA +hibernate,它的调用方式是controller调用service,service有实现的接口serviceimpl,serviceimpl调用 ...
- Spring Data JPA使用findAllOrderBy时踩的坑
Spring Data JPA使用findAllOrderBy时踩的坑 按照以往的编程经验,我的写法是这样的: List<ActivityEntity> findAllOrderByWis ...
- 最近项目中使用Spring data jpa 踩过的坑
最近在做一个有关OA项目中使用spring data JPA 操作数据库,结果遇到了补个不可思议的麻烦.困惑了好久. 首先看一下问题吧,这就是当时测试“设置角色时,需要首先删除该用户已经拥有的角色时” ...
- jpa的@Query中"?"占位符的使用小坑
今天使用@Query自定义查询语句,出现了一个错误: java.lang.IllegalArgumentException: Parameter with that position [1] did ...
随机推荐
- paint之Graphics
在paint方法里面,这个Graphics类就相当于一支画笔.而且就画在那个component里面,比如frame. 看例子代码: import java.awt.*; public class Te ...
- ORACLE 如何查看存储过程的定义
ORACLE 如何查看存储过程的定义 相关的数据字典 USER_SOURCE 用户的存储过程.函数的源代码字典 DBA_SOURCE 整个系统所有用户的存储过程.函数的源代码字典 ALL_SOUR ...
- Struts2------拦截器和标签库和注解开发
一.解析Struts2源码中拦截器的执行 客户端请求Action,执行前端控制器,在前端控制器内部创建了Action的代理类,调用代理类的execute方法,在execute方法内部执行ActionI ...
- 网盘资源搜索的一些知识 C#
针对互联网盘上的资源进行搜索查找.写一个网盘资源搜索的要点主要有以下几点. 1.这个网盘资源搜索的原理就是利用互联网搜索引擎的site 命令. 其次就是针对网页链接进行提取以及处理. 首先就是编写一个 ...
- APK瘦身-是时候给App进行减负了
前言 APK瘦身即是对APK大小进行压缩策略,减小APK安装包大小,更小的安装包更有助于吸引用户安装.前一段时间我司某一App进行APK的瘦身,最终也达到了减小10M的目标,现做一个简单的总结记录. ...
- H.264学习笔记6——指数哥伦布编码
一.哥伦布码 哥伦布码就是将编码对象分能成等间隔的若干区间(Group),每个Group有一个索引值:Group Id. >对于Group Id采用二元码编码: >对于Group内的编码对 ...
- Node.js——获取文件上传进度
https://juejin.im/post/5a77a46cf265da4e78327552?utm_medium=fe&utm_source=weixinqun
- Linq详细介绍
声明----文档转载自:http://www.cnblogs.com/liulun/archive/2013/02/26/2909985.html 在说LINQ之前必须先说说几个重要的C#语言特性 一 ...
- [Windows Server 2008] 404错误设置方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:如何设置4 ...
- CSS中的趣事之float浮动
浮动float一般跟left或是right: 特性: 1,包裹性:浮动文本类型时,需要指定宽度width,如果不指定,就会折叠到最小宽度: 2,浮动会影响别的元素: 3,子级浮动,会导致父级高度 ...