springdatajpa本地查询的时候,报错:org.hibernate.MappingException: Unknown entity: com.hzxc.guesssong.model.QuestionModel

解决办法

1.自定义对象类上添加@Entity注解,在其中一个属性上添加@Id标识注解。

2.如果jpa命名策略为:  jpa.naming.strategy: org.hibernate.cfg.ImprovedNamingStrategy,则sql语句中字段用下划线表示单词连接符。例如:java: userName = > sql: user_name.

示例:

  1. import javax.persistence.Entity;
  2. import javax.persistence.Id;
  3.  
  4. /**
  5. * Created by hdwang on 2018/6/6.
  6. * 问题模型
  7. */
  8. @Entity
  9. public class QuestionModel {
  10.  
  11. @Id
  12. private int questionId;
  13. private int questionType;
  14. private int questionLevel;
  15. private int questionStatus;
  16. private String options;
  17. private String answer;
  18. private int songId;
  19. private String songSrcId;
  20. private String songName;
  21. private String songAuthor;
  22. private String songSourceUrl;
  23. private String songUrl;
  24. private int songStatus;
  25.  
  26. public int getQuestionId() {
  27. return questionId;
  28. }
  29.  
  30. public void setQuestionId(int questionId) {
  31. this.questionId = questionId;
  32. }
  33.  
  34. public int getQuestionType() {
  35. return questionType;
  36. }
  37.  
  38. public void setQuestionType(int questionType) {
  39. this.questionType = questionType;
  40. }
  41.  
  42. public int getQuestionLevel() {
  43. return questionLevel;
  44. }
  45.  
  46. public void setQuestionLevel(int questionLevel) {
  47. this.questionLevel = questionLevel;
  48. }
  49.  
  50. public int getQuestionStatus() {
  51. return questionStatus;
  52. }
  53.  
  54. public void setQuestionStatus(int questionStatus) {
  55. this.questionStatus = questionStatus;
  56. }
  57.  
  58. public String getOptions() {
  59. return options;
  60. }
  61.  
  62. public void setOptions(String options) {
  63. this.options = options;
  64. }
  65.  
  66. public String getAnswer() {
  67. return answer;
  68. }
  69.  
  70. public void setAnswer(String answer) {
  71. this.answer = answer;
  72. }
  73.  
  74. public int getSongId() {
  75. return songId;
  76. }
  77.  
  78. public void setSongId(int songId) {
  79. this.songId = songId;
  80. }
  81.  
  82. public String getSongSrcId() {
  83. return songSrcId;
  84. }
  85.  
  86. public void setSongSrcId(String songSrcId) {
  87. this.songSrcId = songSrcId;
  88. }
  89.  
  90. public String getSongName() {
  91. return songName;
  92. }
  93.  
  94. public void setSongName(String songName) {
  95. this.songName = songName;
  96. }
  97.  
  98. public String getSongAuthor() {
  99. return songAuthor;
  100. }
  101.  
  102. public void setSongAuthor(String songAuthor) {
  103. this.songAuthor = songAuthor;
  104. }
  105.  
  106. public String getSongSourceUrl() {
  107. return songSourceUrl;
  108. }
  109.  
  110. public void setSongSourceUrl(String songSourceUrl) {
  111. this.songSourceUrl = songSourceUrl;
  112. }
  113.  
  114. public String getSongUrl() {
  115. return songUrl;
  116. }
  117.  
  118. public void setSongUrl(String songUrl) {
  119. this.songUrl = songUrl;
  120. }
  121.  
  122. public int getSongStatus() {
  123. return songStatus;
  124. }
  125.  
  126. public void setSongStatus(int songStatus) {
  127. this.songStatus = songStatus;
  128. }
  129. }
  1. @Service
  2. public class QuestionQueryServiceImpl implements QuestionQueryService {
  3.  
  4. @PersistenceContext
  5. EntityManager entityManager;
  6.  
  7. @Override
  8. public QuestionVO getOneRandomQuestionByLevel(int level) {
  9. String sql = "select q1.id as question_id,q1.type as question_type,q1.`level` as question_level,q1.status as question_status,q1.options,q1.answer,"
  10. +" s.id as song_id,s.song_src_id as song_src_id,s.name as song_name,s.author as song_author,s.source_url as song_source_url,s.url as song_url,s.status as song_status "
  11. + " from question q1 inner join ( "
  12. + " select (min(q2.id) + round(rand()*(max(q2.id) - min(q2.id)))) as id from question q2 where q2.`level`= :level"
  13. + " ) as t on q1.id >= t.id inner join song as s on q1.songid=s.id "
  14. + " limit 1;";
  15. Map<String,Object> params = new HashMap<>();
  16. params.put("level",level);
  17. Query query = this.entityManager.createNativeQuery(sql, QuestionModel.class);
  18. this.setParameters(query,params);
  19. QuestionModel questionModel = (QuestionModel) query.getSingleResult();
  20. QuestionVO vo = new QuestionVO();
  21. this.convertQuestionModelToQuestionVO(questionModel,vo);
  22. return vo;
  23. }
  24.  
  25. private void convertQuestionModelToQuestionVO(QuestionModel model,QuestionVO vo){
  26. vo.setQuestionId(model.getQuestionId());
  27. vo.setQuestionLevel(model.getQuestionLevel());
  28. vo.setQuestionType(QuestionType.valueOf(model.getQuestionType()).getCnName());
  29. vo.setSongUrl(model.getQuestionStatus()==1?model.getSongUrl():model.getSongSourceUrl());
  30. vo.setOptions(JSONArray.parseArray(model.getOptions(),String.class));
  31. }
  32.  
  33. /**
  34. * 给hql参数设置值
  35. * @param query 查询
  36. * @param params 参数
  37. */
  38. private void setParameters(Query query, Map<String,Object> params){
  39. for(Map.Entry<String,Object> entry:params.entrySet()){
  40. query.setParameter(entry.getKey(),entry.getValue());
  41. }
  42. }
  43.  
  44. }

spring data jpa createNativeQuery 错误 Unknown entity的更多相关文章

  1. Spring Data Jpa (五)@Entity实例里面常用注解详解

    详细介绍javax.persistence下面的Entity中常用的注解. 虽然Spring Data JPA已经帮我们对数据的操作封装得很好了,约定大于配置思想,帮我们默认了很多东西.JPA(Jav ...

  2. Spring data jpa中Query和@Query分别返回map结果集

    引用: http://blog.csdn.net/yingxiake/article/details/51016234 http://blog.csdn.net/yingxiake/article/d ...

  3. SpringBoot学习笔记:Spring Data Jpa的使用

    更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...

  4. Spring Data JPA初使用(转载)

    我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...

  5. Spring Data JPA初使用

    我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...

  6. 干货|一文读懂 Spring Data Jpa!

    有很多读者留言希望松哥能好好聊聊 Spring Data Jpa!其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring D ...

  7. Spring Boot (五)Spring Data JPA 操作 MySQL 8

    一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...

  8. spring + springMVC + spring Data + jpa + maven 项目框架搭建

    首先看一下项目结构: 所用到的jar(pom.xml): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  9. Spring Data JPA(官方文档翻译)

    关于本书 介绍 关于这本指南 第一章 前言 第二章 新增及注意点 第三章 项目依赖 第四章 使用Spring Data Repositories 4.1 核心概念 4.2 查询方法 4.3 定义rep ...

随机推荐

  1. 20155202张旭《网络对抗技术》 week1 PC平台逆向破解及Bof基础实践

    20155202张旭<网络对抗技术> week1 PC平台逆向破解及Bof基础实践 1.实践目标: 实践对象:一个名为pwn1的linux可执行文件. 该程序正常执行流程是: main调用 ...

  2. 20155216 Exp8 WEB基础实践

    Exp8 WEB基础实践 实践内容 Apache环境配置 apache是kali下的web服务器,通过访问 ip地址+端口号+文件名称 打开对应的网页. 输入命令 vi /etc/apache2/po ...

  3. DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果

    原文:DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果         由于项目需要,最近在找关于绘制实时曲线图的文章,但看了很多自己实现的话太慢,所以使用了第三方控件来实现(由 ...

  4. Hadoop日记Day11---主从节点接口分析

    一.NameNode 的接口分析 1. NameNode本质 经过前面的学习,可以知道NameNode 本身就是一个java 进程.观察RPC.getServer()方法的第一个参数,发现是this, ...

  5. 【Orleans开胃菜系列2】连接Connect源码简易分析

    [Orleans开胃菜系列2]连接Connect源码简易分析 /** * prism.js Github theme based on GitHub's theme. * @author Sam Cl ...

  6. NodeJS旅程 : express - nodejs MVC 中的王牌

    express 正如ASP.NET MVC 在作为.net平台下最佳的 Mvc框架的地位一样,express在 node.js 环境也有着相同的重要性.在百度上 "nodejs expres ...

  7. flask_admin 笔记三 客户化视图

    客户化视图1, model数据模型参数配置1)配置全局参数内置的ModelView类很适合快速入门. 但是,您需要配置其功能以适合您的特定型号. 这是通过设置ModelView类中提供的配置属性的值来 ...

  8. Linux+Nginx+Asp.net Core及守护进程部署

    上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完 ...

  9. c语言数字图像处理(二):图片放大与缩小-双线性内插法

    图像内插 假设一幅大小为500 * 500的图像扩大1.5倍到750 * 750,创建一个750 * 750 的网格,使其与原图像间隔相同,然后缩小至原图大小,在原图中寻找最接近的像素(或周围的像素) ...

  10. 初学Direct X(7) ——位图的旋转,缩放以及平移

    初学Direct X(7) --位图的旋转,缩放以及平移 本文旨在实现通过D3DXMatrixTransformation2D函数实现位图的旋转,缩放以及平移操作,但是具体的原理部分会在后面进一步的探 ...