spring-data-jpa 查询视图
2019独角兽企业重金招聘Python工程师标准>>>
spring-data-jpa 查询视图,报错,找不到table或者视图!花了一天的时间在网上找了一份资料,亲测后分享给大家,参见:参考资料。
Controller层
@RestController
@RequestMapping("/api")
@ComponentScan
public class UserCertificationController extends BaseController {@Autowiredprivate UserCertificationService userCerService;/*** 视图查询Demo,返回值data* * @return {"data":[{"id":"1","user_name":"mo","userid":"mo101"}],"code":"200","msg":"success"}*/@RequestMapping(value = "/findKdOrView", method = RequestMethod.GET)public String findKdOrView() {List<KdOrView> vlist = this.userCerService.findKdByNativeSQL();return renderSuccess(vlist);}
}
Service层
ObjectDaoService 是共通
ObjectDaoService.java
public interface ObjectDaoService {EntityManager getEntityManager();
}
ObjectDaoServiceImpl.java
@Service
public class ObjectDaoServiceImpl implements ObjectDaoService {@PersistenceContextprivate EntityManager entityManager;@Overridepublic EntityManager getEntityManager(){return this.entityManager;}}
业务逻辑层
UserCertificationService
@Service
public interface UserCertificationService {public List<KdOrView> findKdByNativeSQL();}
UserCertificationServiceImpl
@Service
public class UserCertificationServiceImpl implements UserCertificationService {@Resourceprivate ObjectDaoService objectDaoService;public List<KdOrView> findKdByNativeSQL() {// 1.组织sql语句,这里设置参数 ":id" 方式,还有一种是 "?1,?2",需要指定String sql = "select id,user_name,userid from kdorview k where k.id = :id";// 2.创建实体管理对象EntityManager entityManager = objectDaoService.getEntityManager();// 3.使用jpa 包装查询,获取query 对象Query query = entityManager.createNativeQuery(sql);// 4.再使用去包装查询获取 nativeQuery 对象SQLQuery nativeQuery = query.unwrap(SQLQuery.class);// 5.设置参数,对应上面的参数 ":id"nativeQuery.setParameter("id", "1");// 设置返回值类型Map,然后对Map进行处理。nativeQuery.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);// 6.执行查询,获取viewlistList<KdOrView> viewlist = new ArrayList<KdOrView>();// 解析viewlist,根据功能逻辑封装@SuppressWarnings("unchecked")List<Map<String, Object>> retVal = nativeQuery.list();if (retVal != null && retVal.size() > 0) {for (Map<String, Object> map : retVal) {KdOrView kv = new KdOrView();// key字段全部要大写,这里使用的是oracle数据库kv.setId(map.get("ID").toString());kv.setUser_name(map.get("USER_NAME").toString());kv.setUserid(map.get("USERID").toString());viewlist.add(kv);}}return viewlist;}
Domain
// domain 中不需要任何的注解,这是一个映射到视图的enity,并没有真实的表。
public class KdOrView implements Serializable {/*** */private static final long serialVersionUID = 1L;// KD Table Fieldprivate String id;private String user_name;// Or Table Fieldprivate String userid;public KdOrView() {}public KdOrView(String id, String user_name, String userid) {this.id = id;this.user_name = user_name;this.userid = userid;}// GET SET....... 省略}
DB View:kdorView 视图结构。
备注:
中间因为想把view当做table使用,创建了接口Repository,但是总会报错找不到表或者视图。
使用
@Override public List<Report> getReport() { String jpql= String.format("select new %3$s(a.deptId, a.deptName, (select count(*) from %2$s b where b.deptId= a.deptId) as totalCount) from %1$s a", Depts.class.getName(), Students.class.getName(), Report.class.getName()); EntityManager entityManager= objectDaoService.getEntityManager(); //建立有类型的查询 TypedQuery<Report> reportTypedQuery= entityManager.createQuery(jpql, Report.class); //另外有详细查询条件的在jpql中留出参数位置来(?1 ?2 ?3....),然后在这设置 //reportTypedQuery.setParameter(1, params); List<Report> reports= reportTypedQuery.getResultList(); return reports; }
上面这种方法时候也总是提示no pressi......
参考资料:
http://blog.csdn.net/chaijunkun/article/details/8442406
转载于:https://my.oschina.net/u/263874/blog/540615
spring-data-jpa 查询视图相关推荐
- Spring Data JPA 查询方法的命名语法与参数
3 Spring Data JPA 查询方法的命名语法与参数 在⼯作中,你是否经常为⽅法名的语义.命名规范⽽发愁?是否要为不同的查询条件写各种的 SQL 语句?是否为同⼀个实体的查询,写⼀个超级通⽤的 ...
- spring data jpa 查询自定义字段,转换为自定义实体
目标:查询数据库中的字段,然后转换成 JSON 格式的数据,返回前台. 环境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2 背景:首先建立 ...
- Spring Data JPA 查询方法支持的关键字
Table 2.3. Supported keywords inside method names Keyword Sample JPQL snippet And findByLastnameAndF ...
- 使用Spring Data JPA进行分页和排序
通过代码示例学习使用Spring Data JPA进行分页和排序 . 了解如何使用Springs PagingAndSortingRepository接口获取分页和排序结果. 1概述 在处理大量数据时 ...
- Spring Data JPA问题汇总
刚进公司,发现都用的Spring Data JPA,一脸懵,知乎上遇到了一个大佬写的文章,非常详细,分享一下,我把大佬的文章整理了一下格式,比较好看了,原文链接:https://zhuanlan.zh ...
- Spring Data JPA 从入门到精通~查询结果的处理
参数选择(Sort/Pageable)分页和排序 特定类型的参数,Pageable 并动态 Sort 地将分页和排序应用于查询 案例:在查询方法中使用 Pageable.Slice 和 Sort. P ...
- Spring data jpa 条件查询-按时间段查询
Spring data jpa 条件查询-按时间段查询 @Overridepublic Page<泛型> findRecordList(int couponDetailId, int pa ...
- spring data jpa实现有条件的分页查询功能
spring data jpa实现有条件的分页查询功能 前端部分代码.发送请求: $('#grid').datagrid({iconCls: 'icon-forward',fit: true,bord ...
- spring data jpa实现分页查询功能
spring data jpa实现分页查询功能 HTML代码部分: // 收派标准信息表格 $('#grid').datagrid( {iconCls : 'icon-forward',fit : t ...
- Spring Data JPA 条件查询的关键字
Spring Data JPA 为此提供了一些表达条件查询的关键字,大致如下: And --- 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(Stri ...
最新文章
- 设计一条简单的等待工作队列之软件模型设计与实现(二)
- 解决github很慢的问题
- Linux安装Hbase并验证
- 3分钟了解dubbo服务调试管理实用命令
- 快速上手用Python搭建自己的第一个pyecharts图表
- 昆明大专学计算机,昆明冶金高等专科学校2020年云南省高等教育招收中等职业学校学生 (计算机类)考试大纲...
- 比较版本号大小c语言,比较两个版本字符串version1和version2
- 关于升级到win10后的网络问题
- 再论:男人有多大责任和感恩代表着有多大的驾驭能力和事业能力
- MyEclipse中背景颜色的设定
- 相亲婚恋网站哪个好!交友、约会、找对象都用靠谱的一伴网!
- Ant Design的入门使用教程
- 钛媒体2022 EDGE AWARDS全球创新评选之「年度最佳企业服务品牌」揭榜
- CTF-实验吧-FALSE
- 记一次联通路由器劫持的分析过程
- 高校BBS冷笑话(下)
- 【Linux】第二篇:Linux环境及开发工具
- andoid emoji表情处理
- 模型穿模 和 unity skinnedMeshRender属性quality,QualitySettings属性blend weights 的理解
- 【听】语言本能,语言进化本质探索
热门文章
- Blob和Clob的区别和用法
- 正在搜索需要的文件_【数澜发布-澜寻】智能内容搜索引擎,释放“机器阅读” 潜力...
- 数据字典在sga的哪一个组件中缓存_非功能性约束之性能(1)-性能银弹:缓存...
- 西南科技大学计算机综合大纲,2019年西南科技大学信息工程学院考研复试大纲...
- java scanner以回车结束_请问Scanner在输入回车后,如何才能退出?
- Centos7.x 网卡启动报错(Failed to start LSB: Bring up/down networking)
- C++ 静态成员函数
- 线性表的定义和基本运算之线性结构
- JMS学习三(ActiveMQ消息的可靠性)
- 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。