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  视图结构。

  • 备注:

  1. 中间因为想把view当做table使用,创建了接口Repository,但是总会报错找不到表或者视图。

  2. 使用

  3. @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;  }
  4. 上面这种方法时候也总是提示no pressi......
  • 参考资料:

http://blog.csdn.net/chaijunkun/article/details/8442406

转载于:https://my.oschina.net/u/263874/blog/540615

spring-data-jpa 查询视图相关推荐

  1. Spring Data JPA 查询方法的命名语法与参数

    3 Spring Data JPA 查询方法的命名语法与参数 在⼯作中,你是否经常为⽅法名的语义.命名规范⽽发愁?是否要为不同的查询条件写各种的 SQL 语句?是否为同⼀个实体的查询,写⼀个超级通⽤的 ...

  2. spring data jpa 查询自定义字段,转换为自定义实体

    目标:查询数据库中的字段,然后转换成 JSON 格式的数据,返回前台. 环境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2  背景:首先建立 ...

  3. Spring Data JPA 查询方法支持的关键字

    Table 2.3. Supported keywords inside method names Keyword Sample JPQL snippet And findByLastnameAndF ...

  4. 使用Spring Data JPA进行分页和排序

    通过代码示例学习使用Spring Data JPA进行分页和排序 . 了解如何使用Springs PagingAndSortingRepository接口获取分页和排序结果. 1概述 在处理大量数据时 ...

  5. Spring Data JPA问题汇总

    刚进公司,发现都用的Spring Data JPA,一脸懵,知乎上遇到了一个大佬写的文章,非常详细,分享一下,我把大佬的文章整理了一下格式,比较好看了,原文链接:https://zhuanlan.zh ...

  6. Spring Data JPA 从入门到精通~查询结果的处理

    参数选择(Sort/Pageable)分页和排序 特定类型的参数,Pageable 并动态 Sort 地将分页和排序应用于查询 案例:在查询方法中使用 Pageable.Slice 和 Sort. P ...

  7. Spring data jpa 条件查询-按时间段查询

    Spring data jpa 条件查询-按时间段查询 @Overridepublic Page<泛型> findRecordList(int couponDetailId, int pa ...

  8. spring data jpa实现有条件的分页查询功能

    spring data jpa实现有条件的分页查询功能 前端部分代码.发送请求: $('#grid').datagrid({iconCls: 'icon-forward',fit: true,bord ...

  9. spring data jpa实现分页查询功能

    spring data jpa实现分页查询功能 HTML代码部分: // 收派标准信息表格 $('#grid').datagrid( {iconCls : 'icon-forward',fit : t ...

  10. Spring Data JPA 条件查询的关键字

    Spring Data JPA 为此提供了一些表达条件查询的关键字,大致如下: And --- 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(Stri ...

最新文章

  1. 设计一条简单的等待工作队列之软件模型设计与实现(二)
  2. 解决github很慢的问题
  3. Linux安装Hbase并验证
  4. 3分钟了解dubbo服务调试管理实用命令
  5. 快速上手用Python搭建自己的第一个pyecharts图表
  6. 昆明大专学计算机,昆明冶金高等专科学校2020年云南省高等教育招收中等职业学校学生 (计算机类)考试大纲...
  7. 比较版本号大小c语言,比较两个版本字符串version1和version2
  8. 关于升级到win10后的网络问题
  9. 再论:男人有多大责任和感恩代表着有多大的驾驭能力和事业能力
  10. MyEclipse中背景颜色的设定
  11. 相亲婚恋网站哪个好!交友、约会、找对象都用靠谱的一伴网!
  12. Ant Design的入门使用教程
  13. 钛媒体2022 EDGE AWARDS全球创新评选之「年度最佳企业服务品牌」揭榜
  14. CTF-实验吧-FALSE
  15. 记一次联通路由器劫持的分析过程
  16. 高校BBS冷笑话(下)
  17. 【Linux】第二篇:Linux环境及开发工具
  18. andoid emoji表情处理
  19. 模型穿模 和 unity skinnedMeshRender属性quality,QualitySettings属性blend weights 的理解
  20. 【听】语言本能,语言进化本质探索

热门文章

  1. Blob和Clob的区别和用法
  2. 正在搜索需要的文件_【数澜发布-澜寻】智能内容搜索引擎,释放“机器阅读” 潜力...
  3. 数据字典在sga的哪一个组件中缓存_非功能性约束之性能(1)-性能银弹:缓存...
  4. 西南科技大学计算机综合大纲,2019年西南科技大学信息工程学院考研复试大纲...
  5. java scanner以回车结束_请问Scanner在输入回车后,如何才能退出?
  6. Centos7.x 网卡启动报错(Failed to start LSB: Bring up/down networking)
  7. C++ 静态成员函数
  8. 线性表的定义和基本运算之线性结构
  9. JMS学习三(ActiveMQ消息的可靠性)
  10. 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。