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的更多相关文章

  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. IDEA插件——lombok的简单使用

    一.介绍 lombok是一个可以通过注解来简化许多繁琐的get.set以及构造函数等的工具.它可以让我们在代码编写的时候省去代码,而在编译生成的字节码中生成相应的字节码! 官网:https://pro ...

  2. [THUSC2017]巧克力[斯坦纳树、随机化]

    题意 题目链接 分析 对于第一问,如果颜色数量比较少的话可以 \(\binom{cnt}{k}\) 枚举最终连通块中的 \(k\) 种颜色,然后利用斯坦纳树求解. 如果颜色比较多,考虑将所有的颜色重新 ...

  3. 微信小程序中跳转另一个小程序

    wx.navigateToMiniProgram({ appId: 'xxxxxxxxxxxxxxxxxx', // 要跳转的小程序的appid path: 'page/index/index', / ...

  4. Git提交空目录

    1.git仅跟踪文件的变动,不跟踪目录.如果需要提交空目录,可以在里面添加 .gitignore 文件,方法如下: find . -type d -empty -exec touch {}/.giti ...

  5. 带WIFI模块布局布线要点。

    带WIFI模块布局布线要求: 1: RF底部不能铺铜要挖空不能有GND否则RF信号会被耦合掉从而无法发送出去. 2:WIFI模块下方不能打孔尽量不走线不打孔避开其他信号穿过下方,要整体的铺铜 3:连接 ...

  6. 浅谈SVG(可缩放的矢量图形)

    前一段项目中用到了svg图片就和其他的元素一样 直接引用就可以展示在页面上,因为项目紧张没有仔细的研究,最近在扩展自己的基础知识,偶然看到了这个东西,于是总结了一些博客园中关于这个svg的基础知识,只 ...

  7. 一、Unity Editor自定义菜单

    官方文档:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu ...

  8. 拓扑排序(Topological Sort)

    Graph 拓扑排序(Topological Sort) 假设一个应用场景:你用 C 编写了一个爬虫工具,其中有很多自定义的库:queue.c.queue.h.stack.c.stack.h.heap ...

  9. HyperLedger/Fabric SDK使用Docker容器镜像快速部署上线

    HyperLedger/Fabric SDK Docker Image 该项目在github上的地址是:https://github.com/aberic/fabric-sdk-container ( ...

  10. [T-ARA][Ma boo]

    歌词来源:http://music.163.com/#/song?id=22704447 作曲 : 金道勋/Rhymer [作曲 : 金道勋/Rhymer] 作词 : 金道勋 [作词 : 金道勋] 사 ...