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. Python面向对象之异常捕获(一)-----抛出一个异常

    大部分的异常都继承自Exception这个类(而这个类有继承自BaseException这个类) 常见的异常 ValueError TypeError IndexError 抛出一个异常 下面这个类的 ...

  2. excel实用技巧——vlookup函数

    1.VLOOKUP函数的套路 VLOOKUP(要找谁,在哪儿找,返回第几列的内容,精确找还是近似找) 最后一个参数: 如果为0或FASLE,用精确匹配方式,而且支持无序查找: 如果为TRUE或被省略, ...

  3. Android与Libgdx环境配置

    此处所说的是基于windows和android版本的libgdx环境配置. 1. 下载所需软件 JDK 1.7. 下载地址: window x86版本地址: http://www.oracle.com ...

  4. sqlyog mysql 外键引用列找不到想要的字段的原因

    这是因为引用列必须为一个主键才行

  5. MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”

    问题 MSBUILD : error MSB3428: 未能加载 Visual C++ 组件"VCBuild.exe".要解决此问题,1) 安装 .NET Framework 2. ...

  6. Mysql_游标

    MySQL中的游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制.MySQL中的游标的语法 ...

  7. vector 简介

    vector简介 vector是STL中最常见的容器,它是一种顺序容器,支持随机访问.vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似, 不同的地方就是:数组是静态分配空间,一旦 ...

  8. [Hanani]JAVA大数相关学习记录

    1.Basic remains 题目链接 涉及内容: |大数读入|大数模|大数进制读入时转化为十进制|大数输出时转化为其他进制输出| import java.io.*; import java.mat ...

  9. Nuxeo 认证绕过和RCE漏洞分析(CVE-2018-16341)

    简介 Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS).nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页 ...

  10. PAT甲题题解-1128. N Queens Puzzle (20)-做了一个假的n皇后问题

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789810.html特别不喜欢那些随便转载别人的原创文章又不给 ...