gpt4 book ai didi

spring - JPA 存储库适用于 IDEA 和生产环境,但不适用于 gradle

转载 作者:行者123 更新时间:2023-12-03 04:49:27 25 4
gpt4 key购买 nike

我正在使用 Spring 数据 JPA 存储库。

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

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

我的类(class)有@Entity 注释并从另一个具有@MappedSuperclass 的类(class)继承

这里可能有什么问题?在 IDEA 和 gradle 中运行有什么区别(IDEA 项目是使用 gradle idea 生成的)

它是带有 spring 的 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"/>

最佳答案

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

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

关于spring - JPA 存储库适用于 IDEA 和生产环境,但不适用于 gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19653311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com