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

2023-12-30

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

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

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

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

那么..我怎样才能得到所有@Entity带注释的类可以加载到我的网络应用程序中,而无需在persistence.xml (like here http://javathoughts.capesugarbird.com/2009/02/jpa-and-multiple-persistence-units.html)而是通过组件扫描?This http://forum.springsource.org/showthread.php?61763-Problems-with-JPA-and-multiple-persistence-units似乎是一个想法,虽然我不知道如何使用和测试它......

我认为我们要么必须合并 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" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA - 定义@Entity对象的多个jar 的相关文章

随机推荐

  • unix 脚本 - 制作文本文件时出现问题

    我正在编写一个简单的unix脚本 如下所示 bin bash mkdir tmp temp1 cd tmp temp1 echo ab bc cj nn mm gt output txt grep ab output txt gt newo
  • 在断言中使用“sequence.triggered”时重置感知

    我有一些断言使用triggered序列的性质 这对于检查 当 X 发生时 Y 一定在过去的某个时间发生 形式的属性很有用 让我们举一个简单的例子 给定三个信号 a b and c c仅允许在以下情况下走高 a3 个周期前为高 并且b2 个周
  • javafx 中每个 .css 文件和行的“未知属性”警告

    当我从 git 导入团队的小组项目时遇到问题 当导入到 Eclipse 时 我必须从构建路径库添加 JavaFX SDK 一旦我打开其中包含 css 文件的样式包 它们都会有每行代码下方有黄色警告线 例如 label fx font siz
  • ADO.NET 实体框架教程 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • frama-c mingw __restrict__ 关键字

    我是 Frama C 的新手 我想在Windows环境下运行它 我的编译器是gcc mingw 我尝试运行价值分析教程中的相同示例 因为我对库头文件有问题 我发现无法运行 frama c 因为restrict关键词 它显示 string h
  • 来自 sk_buff 的 IP 地址

    我正在编写一个注册 netfilter 挂钩的内核模块 我试图通过使用来获取呼叫者的IP地址sk buff gt saddr成员 有没有办法获得人类可读的 IP 即 x x x x 格式 我找到了这个功能inet ntop 但它似乎在内核头
  • 如何从 VC++ 2008 开发的 GUI 中打开帮助文件(chm 等)?

    我正在尝试为我在 VC 2008 中开发的 GUI 添加一些帮助 我想编译一个 chm 文件 或者一个可以从我的菜单访问的 hlp 文件 任何人都可以告诉我如何执行此操作吗 多谢 Under HKLM Software Microsoft
  • 如何在 Heroku 上托管的 Django 项目中使用 Werkzeug 交互式回溯调试器?

    在 Django 项目中安装了 django extensions 后 您可以在本地计算机上使用manage py runserver plus激活非常有用的 Werkzeug 调试器 这样 500 错误页面就可以让您以交互方式浏览堆栈 从
  • 如果操作未经过身份验证,expressJS 呈现登录引导模式

    我正在编写一个expressjs ejs应用程序 它使用Twitter Bootstrap 3作为网页 我使用 Bootstrap Modal 进行登录 我已将模式包含在标题部分中 因此它可用于每个网页 但是 如果用户尚未登录 则需要先进行
  • 如何捕获Kafka-Spring中的反序列化错误?

    我正在启动一个使用 kafka 消息的应用程序 我跟着Spring文档 https docs spring io spring kafka docs 2 2 4 RELEASE reference error handling deseri
  • Android-L CardView 视觉触摸反馈

    谁能向我解释一下如何在 CardView 中实现 Google I O 2014 上演示的一些视觉触摸反馈 这是我在 XML 中使用 CardView 的方式 可能缺少一些小东西 所以我只是想知道是否有人可以帮助我
  • 导入其他依赖项需要的依赖项版本[重复]

    这个问题在这里已经有答案了 我有两个箱子X and Z我想同时使用但是X依赖于取决于Z在某些特定版本上 例如 mongodb依赖于tokio 0 2 而我使用的是tokio 0 3 X不再出口Z所以我 认为 必须手动指定Z in Cargo
  • 使用 Json.Net 反序列化,将子对象反序列化为保存 json 的 string/similar?

    我正在尝试使用 Json 创建一个配置文件 该文件将保存各种类型对象的配置 考虑这个文件 cameras type Some Namespace CameraClass assembly Some Assembly configuratio
  • 更改主页按钮的长按功能

    我正在寻找 Android 技巧 来更改长按主页按钮的功能 目前 长按主页按钮打开任务管理器 相反 我希望长单击充当短单击 这意味着将我们带到默认启动器的主页 理想情况下 这个技巧适用于所有 Android 版本 但如果它仅适用于 2 3
  • 通过 C# 在 excel 中使用模板

    作为我正在生成的 C 程序的一部分 我需要生成 1 个工作簿 其中包含 2 个不同的工作表和第 3 个可以多次生成的工作表 最有效的方法是什么 我已经研究过使用模板 尽管我不确定如何重复某些工作表 同时只显示其他工作表一次 任何帮助或建议将
  • 用于从视频创建小 gif 的 Lib/API?

    我想从现有视频创建 GIF 我搜索了相关问题 但没有找到任何可以帮助我的链接 我一直在寻找任何可以帮助我从视频创建位图的库或 API 然后我将再次从该位图创建 GIF 或直接从视频创建 GIF 是否有任何库或 API 可以从视频中捕获位图序
  • 打字稿“元素类型上不存在属性”

    我将开始我的 Typescript 之旅 所以我有video在我的 Html 和中标记 ts将这些行归档 class KomakhaPlayer private container private video Element this co
  • 使用 python mechanize 通过 NTLM 身份验证登录页面

    我想使用 mechanize 登录页面并检索一些信息 但是我尝试验证它只是失败并显示错误代码HTTP 401 如下所示 r br open http intra File bui e mechanize py line 203 in ope
  • 将包含字符串的 Pandas 系列转换为布尔值

    我有一个名为df as Order Number Status 1 1668 Undelivered 2 19771 Undelivered 3 100032108 Undelivered 4 2229 Delivered 5 00056
  • JPA - 定义@Entity对象的多个jar

    我们正在以非常模块化的方式使用 Spring Hibernate 和 Maven 开发 Web 应用程序 有定义数据访问和查看特定内容的核心项目 然后有定义逻辑和实体的模块 Entity 然后是定义控制器和视图的 Web 应用程序 现在我们