spring data jpa 关联查询返回自定义对象
2016-10-14 16:44
736 查看
@Override public List<SimpleRights> getListByOperatorId(int operatorId) { EntityManager em = entityManagerFactory.createEntityManager(); try { List<Rights> list; Query query = em.createNativeQuery("select r.id,r.rightName,r.iconCls,r.fartherId,r.orderIndex," + "r.urlPath,r.needLimit,r.rightType" + " from t_xfw_rights r " + "inner join t_xfw_operator_rights x on r.id=x.right_id " + "where x.user_id=? ",Rights.class); query.setParameter(1, operatorId); list = query.getResultList(); List<SimpleRights> tmp =new ArrayList<>(); for(int i=0;i<list.size();i++){ tmp.add(list.get(i).toSimpleRights()); } return tmp; } catch (Exception e) { throw e; } finally { em.close(); } }
Rights 对象有关联关系,在action中返回json时回出现session关闭错误,所以转换成SimpleRights对象,这个方法是查询某个用户的权限集合,Rights中有List,所以在返回的时候,jpa会再懒加载这个列表,但在控制器中这个数据库session已关闭,就出错了,新建一个SimpleOperator对象,里面加上List属性,就可以政策返回。
上边通过createNativeQuery创建一个本地关联查询,自动映射到Rights对象上,然后手动转到SimpleRights,再返回,转换对象会有效率问题,所以不适合大数据量操作。
相关文章推荐
- spring data jpa 自定义复杂sql语句(多个select嵌套) 并返回自定义对象
- Spring Data Jpa 查询返回自定义对象
- Spring data jpa 自定义查询返回,用FastJson把Map转换为JavaBean
- Spring Data Jpa 使用@Query标注自定义查询语句
- 【系统学习SpringBoot】再遇Spring Data JPA之JPA应用详解(自定义查询及复杂查询)
- spring-data-jpa双向表关联查询时引发异常:java.lang.StackOverflowError: null
- spring data jpa 自定义接口实现
- 利用AOP为Spring Data Jpa的接口Repository添加全局自定义过滤
- Spring Data JPA 自定义查询
- spring data jpa 自定义sql 左链接查询
- Spring data jpa 自定义SQL语句遇到错误Not supported for DML operations
- Spring Data JPA: 实现自定义Repository
- Spring Data JPA: 为所有Repository添加自定义方法
- Spring Data JPA自定义查询,分页,排序
- spring data jpa 自定义接口
- Spring Data Jpa 自定义方法实现问题
- spring-data-neo4j 自定义返回结果
- 通过spring-data-jpa进行复杂对象查询
- Spring Data Jpa 自定义 Repository EntityManager is null
- spring-data-jpa 下自定义命名策略