gpt4 book ai didi

hibernate - JPA - 定义 @Entity 对象的多个 jar

转载 作者:行者123 更新时间:2023-12-03 11:29:23 25 4
gpt4 key购买 nike

我们正在以非常模块化的方式使用 Spring、Hibernate 和 Maven 开发一个 Web 应用程序。有定义数据访问和查看特定内容的核心项目,然后有定义逻辑和实体的模块 (@Entity),然后是定义 Controller 和 View 的 Web 应用程序。

现在我们有一个定义安全实体(如帐户和角色)的安全模块,并且我们有一个原型(prototype)模块定义了一些示例实体,如客户和订单。两者都有 PersistenceUnitpersistence.xml 中定义除了 PersistenceUnit 名称外,它几乎是空的,因为所有数据库配置都是在 web 应用程序中使用 datasource.xml 完成的。 Web 应用程序应该将两个 jar 作为 maven 依赖项加载。

这两个项目都将构建良好,自动扫描所有实体并为各自的单元测试创​​建它们。如果单独添加它们,它们也将成功加载到 Web 应用程序中。

但是,一旦同时加载两者,第二个将覆盖 PersistenceUnit第一个,从而创建一个IllegalArgumentException : Not an entity对于第一个实体的所有实体。如果两个项目具有不同的持久性单元,加载 Web 应用程序将引发另一个异常,指出 no single default persistence unit定义。

所以..我怎样才能得到所有@Entity无需在 persistence.xml 中定义所有带注释的类即可加载到我的 Web 应用程序中(如 here )而是通过组件扫描?
This似乎是一个想法,虽然我不知道如何使用和测试它......

我认为我们要么必须合并 Web 应用程序内的所有 PersistenceUnit,要么以编程方式加载所有实体。在persistence.xml 中硬编码定义它们不是我们的选择。

最佳答案

由于这个问题似乎仍然受到关注,我将发布我们对该问题的最新解决方案。

我们现在是自动扫描所有包而不是使用 persistence.xml 任何地方的文件。

在我们的 datasource.xml 中,我们添加了这一行

<property name="packagesToScan" value="our.basepackage" />

几乎完整的datasource.xml:
<!-- Bean definition here -->

<bean id="ourDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<!-- define connection properties -->
</bean>


<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="ourDataSource" />
<property name="packagesToScan" value="our.basepackage" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false" />
<property name="generateDdl" value="true" />
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</bean>
</property>

</bean>

<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" />

关于hibernate - JPA - 定义 @Entity 对象的多个 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7442735/

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