2013-10-29 86 views
0

我正在使用Spring数据JPA存储库。JPA存储库在IDEA和生产环境中工作,但不在gradle中

我的测试是在IDEA运作良好,生产代码工作在Tomcat中,但同时runnung gradle这个测试中,我收到异常应用程序上下文无法创建

... 61 more 
Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.test.FullNamespaceConfig 

我班有@Entity注释和继承从@MappedSuperclass转到另一个类

这里可能有什么问题?是什么在IDEA和gradle这个运行差异

它与春天gradle这个模块(IDEA项目是使用gradle这个想法产生):

<context:annotation-config/> 
<context:component-scan base-package="com.test.dao"/> 
<context:component-scan base-package="com.test.reports"/> 

<tx:annotation-driven transaction-manager="transactionManager"/> 

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${database.driver}"/> 
    <property name="url" value="${database.url}"/> 
    <property name="username" value="${database.user}"/> 
    <property name="password" value="${database.password}"/> 

</bean> 

<!-- Declare a JPA entityManagerFactory--> 
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 

    <property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml"></property> 
    <property name="persistenceUnitName" value="hibernatePersistenceUnit"/> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="${database.showSql}"/> 
      <property name="databasePlatform" value="${hibernate.dialect}"/> 
     </bean> 
    </property> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/> 
    </property> 
    <property name="packagesToScan" value="com.test"/> 
</bean> 

<!-- Declare a transaction manager--> 
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean> 

<jpa:repositories base-package="com.test.dao"/> 

回答

4

Gradle将类和资源放在单独的输出目录中,JPA不喜欢。尝试:

sourceSets.main.output.resourcesDir = sourceSets.main.output.classesDir 
sourceSets.test.output.resourcesDir = sourceSets.test.output.classesDir 
+0

中添加了spring xml太棒了!谢谢! –

0

有限公司的信息,但它似乎像com.test.FullNamespaceConfig是一个实体,对吗?它驻留在你的测试项目中?如果是这样,那么也许你在测试项目中缺少一个persistence.xml文件,这意味着该实体未被检测到。 如果您可以提供更多关于项目结构的数据,将会有所帮助。

+0

在问题 –

相关问题