spring data jpa createNativeQuery 错误 Unknown entity
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.
示例:
- import javax.persistence.Entity;
- import javax.persistence.Id;
- /**
- * Created by hdwang on 2018/6/6.
- * 问题模型
- */
- @Entity
- public class QuestionModel {
- @Id
- private int questionId;
- private int questionType;
- private int questionLevel;
- private int questionStatus;
- private String options;
- private String answer;
- private int songId;
- private String songSrcId;
- private String songName;
- private String songAuthor;
- private String songSourceUrl;
- private String songUrl;
- private int songStatus;
- public int getQuestionId() {
- return questionId;
- }
- public void setQuestionId(int questionId) {
- this.questionId = questionId;
- }
- public int getQuestionType() {
- return questionType;
- }
- public void setQuestionType(int questionType) {
- this.questionType = questionType;
- }
- public int getQuestionLevel() {
- return questionLevel;
- }
- public void setQuestionLevel(int questionLevel) {
- this.questionLevel = questionLevel;
- }
- public int getQuestionStatus() {
- return questionStatus;
- }
- public void setQuestionStatus(int questionStatus) {
- this.questionStatus = questionStatus;
- }
- public String getOptions() {
- return options;
- }
- public void setOptions(String options) {
- this.options = options;
- }
- public String getAnswer() {
- return answer;
- }
- public void setAnswer(String answer) {
- this.answer = answer;
- }
- public int getSongId() {
- return songId;
- }
- public void setSongId(int songId) {
- this.songId = songId;
- }
- public String getSongSrcId() {
- return songSrcId;
- }
- public void setSongSrcId(String songSrcId) {
- this.songSrcId = songSrcId;
- }
- public String getSongName() {
- return songName;
- }
- public void setSongName(String songName) {
- this.songName = songName;
- }
- public String getSongAuthor() {
- return songAuthor;
- }
- public void setSongAuthor(String songAuthor) {
- this.songAuthor = songAuthor;
- }
- public String getSongSourceUrl() {
- return songSourceUrl;
- }
- public void setSongSourceUrl(String songSourceUrl) {
- this.songSourceUrl = songSourceUrl;
- }
- public String getSongUrl() {
- return songUrl;
- }
- public void setSongUrl(String songUrl) {
- this.songUrl = songUrl;
- }
- public int getSongStatus() {
- return songStatus;
- }
- public void setSongStatus(int songStatus) {
- this.songStatus = songStatus;
- }
- }
- @Service
- public class QuestionQueryServiceImpl implements QuestionQueryService {
- @PersistenceContext
- EntityManager entityManager;
- @Override
- public QuestionVO getOneRandomQuestionByLevel(int level) {
- 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,"
- +" 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 "
- + " from question q1 inner join ( "
- + " select (min(q2.id) + round(rand()*(max(q2.id) - min(q2.id)))) as id from question q2 where q2.`level`= :level"
- + " ) as t on q1.id >= t.id inner join song as s on q1.songid=s.id "
- + " limit 1;";
- Map<String,Object> params = new HashMap<>();
- params.put("level",level);
- Query query = this.entityManager.createNativeQuery(sql, QuestionModel.class);
- this.setParameters(query,params);
- QuestionModel questionModel = (QuestionModel) query.getSingleResult();
- QuestionVO vo = new QuestionVO();
- this.convertQuestionModelToQuestionVO(questionModel,vo);
- return vo;
- }
- private void convertQuestionModelToQuestionVO(QuestionModel model,QuestionVO vo){
- vo.setQuestionId(model.getQuestionId());
- vo.setQuestionLevel(model.getQuestionLevel());
- vo.setQuestionType(QuestionType.valueOf(model.getQuestionType()).getCnName());
- vo.setSongUrl(model.getQuestionStatus()==1?model.getSongUrl():model.getSongSourceUrl());
- vo.setOptions(JSONArray.parseArray(model.getOptions(),String.class));
- }
- /**
- * 给hql参数设置值
- * @param query 查询
- * @param params 参数
- */
- private void setParameters(Query query, Map<String,Object> params){
- for(Map.Entry<String,Object> entry:params.entrySet()){
- query.setParameter(entry.getKey(),entry.getValue());
- }
- }
- }
spring data jpa createNativeQuery 错误 Unknown entity的更多相关文章
- Spring Data Jpa (五)@Entity实例里面常用注解详解
详细介绍javax.persistence下面的Entity中常用的注解. 虽然Spring Data JPA已经帮我们对数据的操作封装得很好了,约定大于配置思想,帮我们默认了很多东西.JPA(Jav ...
- Spring data jpa中Query和@Query分别返回map结果集
引用: http://blog.csdn.net/yingxiake/article/details/51016234 http://blog.csdn.net/yingxiake/article/d ...
- SpringBoot学习笔记:Spring Data Jpa的使用
更多请关注公众号 Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范(JSR ...
- Spring Data JPA初使用(转载)
我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...
- Spring Data JPA初使用
我们都知道Spring是一个非常优秀的JavaEE整合框架,它尽可能的减少我们开发的工作量和难度. 在持久层的业务逻辑方面,Spring开源组织又给我们带来了同样优秀的Spring Data JPA. ...
- 干货|一文读懂 Spring Data Jpa!
有很多读者留言希望松哥能好好聊聊 Spring Data Jpa!其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring D ...
- Spring Boot (五)Spring Data JPA 操作 MySQL 8
一.Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Sprin ...
- spring + springMVC + spring Data + jpa + maven 项目框架搭建
首先看一下项目结构: 所用到的jar(pom.xml): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...
- Spring Data JPA(官方文档翻译)
关于本书 介绍 关于这本指南 第一章 前言 第二章 新增及注意点 第三章 项目依赖 第四章 使用Spring Data Repositories 4.1 核心概念 4.2 查询方法 4.3 定义rep ...
随机推荐
- 20155202张旭《网络对抗技术》 week1 PC平台逆向破解及Bof基础实践
20155202张旭<网络对抗技术> week1 PC平台逆向破解及Bof基础实践 1.实践目标: 实践对象:一个名为pwn1的linux可执行文件. 该程序正常执行流程是: main调用 ...
- 20155216 Exp8 WEB基础实践
Exp8 WEB基础实践 实践内容 Apache环境配置 apache是kali下的web服务器,通过访问 ip地址+端口号+文件名称 打开对应的网页. 输入命令 vi /etc/apache2/po ...
- DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果
原文:DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果 由于项目需要,最近在找关于绘制实时曲线图的文章,但看了很多自己实现的话太慢,所以使用了第三方控件来实现(由 ...
- Hadoop日记Day11---主从节点接口分析
一.NameNode 的接口分析 1. NameNode本质 经过前面的学习,可以知道NameNode 本身就是一个java 进程.观察RPC.getServer()方法的第一个参数,发现是this, ...
- 【Orleans开胃菜系列2】连接Connect源码简易分析
[Orleans开胃菜系列2]连接Connect源码简易分析 /** * prism.js Github theme based on GitHub's theme. * @author Sam Cl ...
- NodeJS旅程 : express - nodejs MVC 中的王牌
express 正如ASP.NET MVC 在作为.net平台下最佳的 Mvc框架的地位一样,express在 node.js 环境也有着相同的重要性.在百度上 "nodejs expres ...
- flask_admin 笔记三 客户化视图
客户化视图1, model数据模型参数配置1)配置全局参数内置的ModelView类很适合快速入门. 但是,您需要配置其功能以适合您的特定型号. 这是通过设置ModelView类中提供的配置属性的值来 ...
- Linux+Nginx+Asp.net Core及守护进程部署
上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完 ...
- c语言数字图像处理(二):图片放大与缩小-双线性内插法
图像内插 假设一幅大小为500 * 500的图像扩大1.5倍到750 * 750,创建一个750 * 750 的网格,使其与原图像间隔相同,然后缩小至原图大小,在原图中寻找最接近的像素(或周围的像素) ...
- 初学Direct X(7) ——位图的旋转,缩放以及平移
初学Direct X(7) --位图的旋转,缩放以及平移 本文旨在实现通过D3DXMatrixTransformation2D函数实现位图的旋转,缩放以及平移操作,但是具体的原理部分会在后面进一步的探 ...