Spring集成JPA后,报“Not an managed type: class x.x.x"
2015-08-01 18:27
711 查看
以前的Spring脚手架项目,因业务需要,是基于多数据源 and不同方言的数据库的,对于普通项目过于复杂了,
于是重新搭了个单数据源的,用STS新建完毕,这是项目目录,
加上配置之后,先列下application-db-config.xml文件,它提供了spring集成jpa的配置,当然这一版是有点小问题的,下面我们来看
我第一反应时候,这个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文件中加上
数据插入成功,
同时把persistenceXmlLocation注释掉,这样不需要persistence.xml文件也不影响spring与jpa的集成,
但是persistence.xml的配置下得转移到entityManagerFactory的jpaProperties
于是重新搭了个单数据源的,用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>
相关文章推荐
- eclipse 访问控制图标详解
- java获取汉字拼音首字母
- eclipse package explorer视图中怎么让default package不显示?
- java 伪随机数安全性
- 使用无插件的eclipse版本进行J2EE开发所需要下载的插件
- java多线程之 ---- 线程同步
- 集成Dubbo服务(Spring)
- java中return的作用
- Java文件实时监控Commons-io
- Java知多少(完结篇)
- java泛型与通配符类型参数
- JAVA 用ArrayList对对象中某属性排序
- Java的HashMap和HashTable
- JAVA入门基础文章1-类的概念
- Java并发编程实例(synchronized)
- eclipse中导入第三方jar包方法
- JAVA 并发编程-读写锁之模拟缓存系统(十一)
- JAVA 并发编程-线程同步工具类(十二)
- Spring中IoC的入门实例
- Java中HashMap和TreeMap的区别