文档章节

Spring集成JPA后,报“Not an managed type: class x.x.x"

Big_BoBo
 Big_BoBo
发布于 2015/08/01 18:27
字数 763
阅读 7679
收藏 0

    以前的Spring脚手架项目,因业务需要,是基于多数据源 and不同方言的数据库的,对于普通项目过于复杂了,

于是重新搭了个单数据源的,用STS新建完毕,这是项目目录,

加上配置之后,先列下application-db-config.xml文件,它提供了spring集成jpa的配置,当然这一版是有点小问题的,下面我们来看

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:tx="http://www.springframework.org/schema/tx" 
	       xsi:schemaLocation="http://www.springframework.org/schema/beans 
	       			http://www.springframework.org/schema/beans/spring-beans.xsd
		                     http://www.springframework.org/schema/context 
		                     http://www.springframework.org/schema/context/spring-context.xsd
		                     http://www.springframework.org/schema/tx 
				       http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="${database1.driverClassName}"/>
		<property name="jdbcUrl" value="${database1.url}"/>               
		<property name="user" value="${database1.username}"/>
		<property name="password" value="${database1.password}"/>
		<property name="minPoolSize" value="10"/>
		<property name="maxPoolSize" value="80"/>
		<property name="maxIdleTime" value="1800"/>
		<property name="acquireIncrement" value="2"/>
		<property name="acquireRetryDelay" value="1000"/>
		<property name="maxStatements" value="0"/>
		<property name="initialPoolSize" value="20"/>
		<property name="idleConnectionTestPeriod" value="60"/>
		<property name="acquireRetryAttempts" value="30"/>
		<property name="breakAfterAcquireFailure" value="false"/>
		<property name="testConnectionOnCheckout" value="false"/>
		<property name="testConnectionOnCheckin" value="false"/>
	</bean>
     
    <bean id="jpaVendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="generateDdl" value="false" />
		<!-- <property name="showSql" value="false" /> -->
		<!-- <property name="database" value="MYSQL"/> -->
    </bean>   
    
    <!-- Class 'org.hibernate.ejb.HibernatePersistence' is marked deprecated -->
    <bean id="persistenceProvider" class="org.hibernate.jpa.HibernatePersistenceProvider"/>
    
    <bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
            
    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="persistenceXmlLocation" value="classpath:persistence.xml"/>
       	<property name="persistenceUnitName" value="persistenceUnit" />
        <property name="persistenceProvider" ref="persistenceProvider"/>
        <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
        <property name="jpaDialect" ref="jpaDialect"/>
        <property name="packagesToScan">
			<list>
				<value>com.buwei.webpageapp.domain</value>
			</list>
        </property>
        <property name="jpaProperties">  
      		<props>  
          		<prop key="hibernate.show_sql">true</prop>  
          		<prop key="hibernate.format_sql">false</prop> 
          		<prop key="hibernate.hbm2ddl.auto">update</prop> 
          		<prop key="hibernate.connection.charSet">UTF-8</prop> 
          		<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>  
		    </props>  
		</property>  
    </bean>       
         
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj"/>
	
</beans>
和 persistence.xml,让spring来完全管理JPA,所以此文件里不需要什么内容,
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence                      
    	http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL"/>
</persistence>
然后运行单元测试,我的dao是由Spring Data JPA完成的,报了个”Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'systemLogRepository'“


我第一反应时候,这个domain包里的Entity没有被扫描到吗,经过baidu 和 Stack Overflow一番,有说

如果配置了 packagesToScan,就不能配置persistenceUnitName,否则packagesToScan会完全不起作用,

详解可以参考 http://www.cnblogs.com/taven/archive/2013/10/04/3351841.html

把persistenceUnitName注释后的再运行单元测试,还是报错,

”javax.validation.ValidationException: HV000183: Unable to load 'javax.el.ExpressionFactory'. Check that you have the EL dependencies on the classpath, ......“

似乎是少了el依赖,于是在pom文件中加上


<dependency>
  <groupId>javax.el</groupId>
  <artifactId>javax.el-api</artifactId>
  <version>3.0.0</version>
</dependency>
		
<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.el</artifactId>
  <version>3.0.0</version>
</dependency>
再运行单元测试,测试成功


数据插入成功,

同时把persistenceXmlLocation注释掉,这样不需要persistence.xml文件也不影响spring与jpa的集成,

但是persistence.xml的配置下得转移到entityManagerFactory的jpaProperties


<property name="jpaProperties">  
      		<props>  
          		<prop key="hibernate.show_sql">true</prop>  
          		<prop key="hibernate.format_sql">false</prop> 
          		<prop key="hibernate.hbm2ddl.auto">update</prop> 
          		<prop key="hibernate.connection.charSet">UTF-8</prop> 
          		<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>  
		    </props>  
		</property>



 

© 著作权归作者所有

Big_BoBo
粉丝 55
博文 54
码字总数 22137
作品 0
杭州
高级程序员
私信 提问
加载中

评论(1)

changpan
changpan
我今天也碰到了类似的问题,但是到目前为止还没解决,能否帮我看下???
急求:spring mvc3.1访问url报错:org.springframework.web.servlet.PageNotFound

启动tomcat,访问web应用报如下错误: [org.springframework.web.servlet.PageNotFound] - No mapping found for HTTP request with URI [/v20/activity/test/] in DispatcherServlet with ......

曾鹏
2014/06/03
49K
12
初学spring那些事——spring mvc 404错误

一、spring mvc 404错误 输入地址,浏览器只显示404,并无其它多余提示,在Controller类里下断点发现并没有执行。纠结了一天后才百度到是因为servlet.xml里没有配置<mvc:annotation-driven ...

littleant2
2015/07/30
1K
0
一个简单的Spring MVC小例子,为什么总是报404错误

web.xml代码如下: spring-mvc-study2 springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 springmvc / index.jsp sp......

FlashRui
2017/01/17
396
1
No mapping found for HTTP request with URI [/demo/WEB-INF/view/index.html] in DispatcherServlet with name 'SpringMVC'

错误:[org.springframework.web.servlet.PageNotFound] - No mapping found for HTTP request with URI [/demo/WEB-INF/view/index.html] in DispatcherServlet with name 'SpringMVC' web.......

mhi
03/06
805
2
J2EE项目在本地Jetty上能启动运行,但是部署到SAE上报错

事情的经过是这样的。在我的web.xml下配置了下面这个过滤器。 结果在SAE的jetty启动时报 java.lang.IllegalStateException: class org.springframework.web.filter.CharacterEncodingFilter ...

他山
2015/09/28
255
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部