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. 大数据入门第二十二天——spark(一)入门与安装

    一.概述 1.什么是spark 从官网http://spark.apache.org/可以得知: Apache Spark™ is a fast and general engine for larg ...

  2. 20155227《网络对抗》Exp8 Web基础

    20155227<网络对抗>Exp8 Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库. ...

  3. 《图说VR入门》——入门汇总

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53818922 作者:car ...

  4. python 回溯法 子集树模板 系列 —— 8、图的遍历

    问题 一个图: A --> B A --> C B --> C B --> D B --> E C --> A C --> D D --> C E -- ...

  5. Ajax 上传文件(input file FormData)

    FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据.其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用. jQuery Aj ...

  6. 记录一次Docker For Windows10镜像加速器配置

    1.访问https://www.daocloud.io 注册账号 2.访问资源->加速器,或者直接访问网址https://www.daocloud.io/mirror,页面中间有加速配置,例如我 ...

  7. 利用KMP算法解决串的模式匹配问题(c++) -- 数据结构

    题目: 7-1 串的模式匹配 (30 分) 给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串 ...

  8. DRF框架QQ登录功能

    用户模块---QQ登录 流程图 QQ登录文档:http://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0 流程简述 ...

  9. PHP Lavavel 使用控制器 传递变量 以及调用 视图模板

    控制器第一次入门使用 位置: 在app/Http/Controllers 目录下创建文件名格式:例如 UserController路由调用格式:Route::get('user/tom','UserC ...

  10. 小学四则运算APP 第一个冲刺阶段 第四天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 本次发布我们增加了CalculatorsActivity.java.YunsuanActivi ...