为什么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相关推荐

  1. Spring集成JPA提示Not an managed type

    在做Spring与JPA集成时,出现问题如下: Caused by: java.lang.IllegalArgumentException: Not an managed type: class co ...

  2. 终于有人把Spring Data JPA 讲明白了!

    01 什么是JPA? JPA的全称是 Java Persistence API , 中文的字面意思就是Java 的持久层 API , JPA 就是定义了一系列标准,让实体类和数据库中的表建立一个对应的 ...

  3. Springboot 系列(十)使用 Spring data jpa 访问数据库

    前言 Springboot data jpa 和 Spring jdbc 同属于 Spring开源组织,在 Spring jdbc 之后又开发了持久层框架,很明显 Spring data jpa 相对 ...

  4. Spring Boot 之 Spring Data JPA(一)

    今天,我们用一个最简单的例子上手Spring Data JPA的开发. 1.新建工程 首先,我们使用STS建一个工程: Paste_Image.png 这里我们示例使用H2数据库,主要是因为简单,使用 ...

  5. 【Spring Data JPA自学笔记二】初识Spring Data JPA

    文章目录 Spring Data JPA是什么? Spring Data JPA的配置 配置pom.xml 配置applicationContext.xml Spring Data JPA的使用 Sp ...

  6. Spring Data JPA(官方文档翻译)

    关于本书 介绍 关于这本指南 第一章 前言 第二章 新增及注意点 第三章 项目依赖 第四章 使用Spring Data Repositories 4.1 核心概念 4.2 查询方法 4.3 定义rep ...

  7. spring data jpa从入门到精通_Spring Data JPA的简单入门

    前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择.最近 ...

  8. SpringBoot 实战 (八) | 使用 Spring Data JPA 访问 Mysql 数据库

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spri ...

  9. Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | http://blog.di ...

最新文章

  1. 常用转录组组装软件集合
  2. 如何在线把网站html生成xml文件_Sitemap在线生成器,网站地图在线生成工具
  3. Hibernate优化策略
  4. android pc模式 刘祚虎,刘作虎:一加三段式按键安卓手机唯一 5年付出亿级成本...
  5. 第八章:Java_泛型
  6. inside uboot (五) DRAM的构成
  7. [MicroPython]stm32f407控制DS18B20检测温度
  8. jsp文件命名规范_代码规范整理
  9. 求解偏微分方程开源有限元软件deal.II学习--Step 7
  10. 嵌入式课程 之 超声波传感器实验
  11. centos7安装python开发环境(python3_postgresql_sublime_supervisor)
  12. 中国推出人民币外汇货币掉期交易 规避汇率风险
  13. [转]【总结】clc和clear命令的使用
  14. html图片铺底代码,梦幻西游底部师徒四人动态图
  15. dedecms中[field:imglink/]图片大小问题解决办法
  16. 华为路由器接口如何区分_华为路由器的usb接口是什么意思
  17. JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表 - 解无邪
  18. 在uni-app中使用element-ui
  19. 一文讲清:对象存储、文件存储、块存储。绝对好文
  20. 【程序源代码】微信小程序商城

热门文章

  1. 微信之父张小龙:产品经理的必备书单(转)
  2. Jackson 框架使用说明,轻易转换JSON【转】
  3. Listview 的顶部动态广告位的实现
  4. JavaScriptSerializer进行JSON序列化,得到字符串
  5. android入门之三【应用程序组成】
  6. linux与window中sleep函数的头文件
  7. 汇编中的DW:DW 定义一个字
  8. ROS学习(八):ROS URDF-transmission
  9. justify-content与align-items解析
  10. 云计算技术都要学什么?教你分清公有云、私有云和混合云