Spring Data JPA单元测试 Not a managed type
为什么80%的码农都做不了架构师?>>>
编者注
之前在编写HavaWeb的框架的时候,就碰到这个问题了。但是由于懒,没有处理。最近拿起框架继续处理。在单元测试的时候,确实报出该问题。随即详细检查。
问题描述
在一个典型的单元测试用例中,在启动Tomcat后正式运行,没有发生任何问题。能够正常save数据内容,Spring也没有报错。但是在单元测试之中却发生了错误java.lang.IllegalArgumentException: Not a managed type: class xxx.entity.Entity
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration("/src/main/webapp")
@ContextConfiguration(locations = {"classpath:appconfig/mvc/spring/servlet-context.xml"
})
public class EntityJPAServiceTest {@AutowiredEntityJPAService entityJPAService;@Testpublic void getInsert() throws Exception {Entity entity= new Entity();entity.setName("entity01");entity.setDescription(entity.getName() + " Decription");entity.setSpaceType(SpaceType.interior);entity.setTitle("Entity01");entityJPAService.create(entity);}}
经过确实的查询和附录的链接提供的信息发现是配置文件的错误
<!-- 对JPA声明以hibernate进行实现 --><!-- hibernate 5.2.x after --><bean id="persistenceProvider" class="org.hibernate.jpa.HibernatePersistenceProvider"/><!-- hibernate 5.1.x before --><!--<bean id="persistenceProvider" class="org.hibernate.ejb.HibernatePersistence"/>--><bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /><bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/><!-- JPA进行实体扫描 --><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><!-- 自动扫描Entity实体 --><property name="packagesToScan" value="org.aicfve"/><!-- 指明JPA的persistence的配置文件位置 --><!-- 注意:如果使用在springmvc做配置,则不要引用persistence.xml,否则单元测试发生错误 --><property name="persistenceXmlLocation" value="classpath:appconfig/orm/jpa/persistence.xml" /><property name="persistenceUnitName" value="persistenceUnit"/><!-- 注入dataSource --><property name="dataSource" ref="dataSource"/><property name="jpaVendorAdapter" ref="jpaVendorAdapter" /><!-- 指定具体实现ORM框架的特定属性 --><property name="jpaProperties"><props><prop key="hibernate.show_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop><prop key="hibernate.dialect">${jdbc.dialect}</prop></props></property></bean>
首先在persistence.xml中添加对应的class内容,能够正确解决该问题,但是随即带来的所有的Entity并不通过扫描,而是要手动输入,工作量太大。放弃了这种方法。
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL"><!-- hibernate 5.2.x after --><!--<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>--><!-- hibernate 5.1.x before --><!--<provider>org.hibernate.jpa.HibernatePersistence</provider>--><!--<properties>--><!--<property name="hibernate.ejb.cfgfile" value="classpath:appconfig/orm/hibernate/hibernate.cfg.xml" />--><!--</properties>--><class>xxx.entity.Entity</class></persistence-unit>
主要的发生问题是如下两句,这两句
<property name="persistenceXmlLocation" value="classpath:appconfig/orm/jpa/persistence.xml" /><property name="persistenceUnitName" value="persistenceUnit"/>
解决方法
上面两句话都删除,或者删除任意一条,都可以解决这个问题。在正式运行与单元测试,不会发生问题。
附录
不在JPA 的 persistence.xml 文件中配置Entity class的解决办法
转载于:https://my.oschina.net/hava/blog/1543382
Spring Data JPA单元测试 Not a managed type相关推荐
- Spring集成JPA提示Not an managed type
在做Spring与JPA集成时,出现问题如下: Caused by: java.lang.IllegalArgumentException: Not an managed type: class co ...
- 终于有人把Spring Data JPA 讲明白了!
01 什么是JPA? JPA的全称是 Java Persistence API , 中文的字面意思就是Java 的持久层 API , JPA 就是定义了一系列标准,让实体类和数据库中的表建立一个对应的 ...
- Springboot 系列(十)使用 Spring data jpa 访问数据库
前言 Springboot data jpa 和 Spring jdbc 同属于 Spring开源组织,在 Spring jdbc 之后又开发了持久层框架,很明显 Spring data jpa 相对 ...
- Spring Boot 之 Spring Data JPA(一)
今天,我们用一个最简单的例子上手Spring Data JPA的开发. 1.新建工程 首先,我们使用STS建一个工程: Paste_Image.png 这里我们示例使用H2数据库,主要是因为简单,使用 ...
- 【Spring Data JPA自学笔记二】初识Spring Data JPA
文章目录 Spring Data JPA是什么? Spring Data JPA的配置 配置pom.xml 配置applicationContext.xml Spring Data JPA的使用 Sp ...
- Spring Data JPA(官方文档翻译)
关于本书 介绍 关于这本指南 第一章 前言 第二章 新增及注意点 第三章 项目依赖 第四章 使用Spring Data Repositories 4.1 核心概念 4.2 查询方法 4.3 定义rep ...
- spring data jpa从入门到精通_Spring Data JPA的简单入门
前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择.最近 ...
- SpringBoot 实战 (八) | 使用 Spring Data JPA 访问 Mysql 数据库
微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spri ...
- Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | http://blog.di ...
最新文章
- 常用转录组组装软件集合
- 如何在线把网站html生成xml文件_Sitemap在线生成器,网站地图在线生成工具
- Hibernate优化策略
- android pc模式 刘祚虎,刘作虎:一加三段式按键安卓手机唯一 5年付出亿级成本...
- 第八章:Java_泛型
- inside uboot (五) DRAM的构成
- [MicroPython]stm32f407控制DS18B20检测温度
- jsp文件命名规范_代码规范整理
- 求解偏微分方程开源有限元软件deal.II学习--Step 7
- 嵌入式课程 之 超声波传感器实验
- centos7安装python开发环境(python3_postgresql_sublime_supervisor)
- 中国推出人民币外汇货币掉期交易 规避汇率风险
- [转]【总结】clc和clear命令的使用
- html图片铺底代码,梦幻西游底部师徒四人动态图
- dedecms中[field:imglink/]图片大小问题解决办法
- 华为路由器接口如何区分_华为路由器的usb接口是什么意思
- JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表 - 解无邪
- 在uni-app中使用element-ui
- 一文讲清:对象存储、文件存储、块存储。绝对好文
- 【程序源代码】微信小程序商城