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 ...
随机推荐
- IDEA插件——lombok的简单使用
一.介绍 lombok是一个可以通过注解来简化许多繁琐的get.set以及构造函数等的工具.它可以让我们在代码编写的时候省去代码,而在编译生成的字节码中生成相应的字节码! 官网:https://pro ...
- [THUSC2017]巧克力[斯坦纳树、随机化]
题意 题目链接 分析 对于第一问,如果颜色数量比较少的话可以 \(\binom{cnt}{k}\) 枚举最终连通块中的 \(k\) 种颜色,然后利用斯坦纳树求解. 如果颜色比较多,考虑将所有的颜色重新 ...
- 微信小程序中跳转另一个小程序
wx.navigateToMiniProgram({ appId: 'xxxxxxxxxxxxxxxxxx', // 要跳转的小程序的appid path: 'page/index/index', / ...
- Git提交空目录
1.git仅跟踪文件的变动,不跟踪目录.如果需要提交空目录,可以在里面添加 .gitignore 文件,方法如下: find . -type d -empty -exec touch {}/.giti ...
- 带WIFI模块布局布线要点。
带WIFI模块布局布线要求: 1: RF底部不能铺铜要挖空不能有GND否则RF信号会被耦合掉从而无法发送出去. 2:WIFI模块下方不能打孔尽量不走线不打孔避开其他信号穿过下方,要整体的铺铜 3:连接 ...
- 浅谈SVG(可缩放的矢量图形)
前一段项目中用到了svg图片就和其他的元素一样 直接引用就可以展示在页面上,因为项目紧张没有仔细的研究,最近在扩展自己的基础知识,偶然看到了这个东西,于是总结了一些博客园中关于这个svg的基础知识,只 ...
- 一、Unity Editor自定义菜单
官方文档:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu ...
- 拓扑排序(Topological Sort)
Graph 拓扑排序(Topological Sort) 假设一个应用场景:你用 C 编写了一个爬虫工具,其中有很多自定义的库:queue.c.queue.h.stack.c.stack.h.heap ...
- HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线
HyperLedger/Fabric SDK Docker Image 该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container ( ...
- [T-ARA][Ma boo]
歌词来源:http://music.163.com/#/song?id=22704447 作曲 : 金道勋/Rhymer [作曲 : 金道勋/Rhymer] 作词 : 金道勋 [作词 : 金道勋] 사 ...