当前位置: 首页 > 面试题库 >

将持久性单元配置为可以放在几个耳中

廖臻
2023-03-14
问题内容

在.earhtml" target="_blank">文件中,由于一些技术限制,我的EJB被复制到多个jar中,并产生了冲突。这些jar中只有一个包含persistence.xml文件,其中我已经配置了几个持久性单元。

myear.ear
|---- myjar1.jar
|-------- META-INF/persistence.xml
|---- myjar2.jar
|---- mywar.war

问题是Jboss无法在jar“ myjar2”和war中找到类的持久性配置:

由于以下错误,无法获取.... EjbA.class的类配置:在部署“ myear.ear”的子部署“
jar2.jar”处找不到名为xxxxx的部署单元

为了解决这个问题,我试图创建一个仅包含persistence.xml文件的新jar,但是它不起作用。

关于如何在不重新组织我的所有耳朵档案的情况下如何将persistence.xml文件共享到每个jar的想法?


问题答案:

根据JPA规范,您应该可以在EAR级别定义一个持久性单元,该持久性单元对于在同一.ear中定义的所有子模块都是可见的:

8.2.2持久性单元的范围

在EAR级别定义的持久性单元通常对于应用程序中的所有组件都是可见的 。但是,如果由EAR中的EJB-
JAR,WAR或应用程序jar文件定义了具有相同名称的持久性单元,则在EAR级别定义的具有该名称的持久性单元对于该EJB-
JAR,WAR或应用程序jar文件,除非持久性单元引用使用持久性单元名称#语法指定路径名称以消除引用的歧义。

但是,在第8节中:

注意:Java Persistence 1.0支持在EAR的根目录中将jar文件用作持久性单元的根目录。
不再支持此用法。在这种情况下,可移植应用程序应使用EAR库目录
。参见[9]。

因此,我将尝试将jar放在lib文件夹中。如果需要将该模块作为EJB模块,则它必须在耳朵的根部,因此可以使用persistence.xml文件创建一个单独的jar。



 类似资料:
  • 我试图使用EJB 3.1、JPA 2.0、M2E-WTP和JSF 2.1技术在WebLogic12c服务器上运行我的webapp,但仍然出现以下错误: 这是触发异常的EJBBean 下面是persistence.xml文件,它位于eclipse构建的src/main/java-->META-INF下。 我花了几个小时在网上寻找答案,但没有结果。我不明白为什么我的persistence.xml中的持

  • 我正在编写一个独立的java应用程序,从Maven项目构建它并通过调用jar文件执行。 在应用程序中,我有一个实体管理器,它使用在我的持久性中定义的持久性单元。xml是独立的(事务类型=“RESOURCE\u LOCAL”) 实际的实体注释类来自另一个项目,因此被添加到pom中。xml文件作为依赖项。 问题是持久性。包含实体类的项目的xml覆盖了实际独立应用程序的持久性。构建jar时,jar目标文

  • 问题内容: 我在JPA /hibernate配置中配置了两个持久性单元。现在,我需要为每个持久性单元执行不同的import.sql。如何指定每个持久性单元应执行哪个import.sql?根据文档的Hibernate,我应该将import.sql放在classpath中。如果我这样做,则将在每个持久性单元上执行import.sql。我需要以某种方式为每个持久性单元指定不同的import.sql。 问

  • 有没有办法将quarkus security jpa与多个持久性单元一起使用?JpaIdentityProvider似乎直接注入了实体管理器工厂,这导致了“javax.persistence.EntityManagerFactory类型的不满意依赖”的异常。 可能有解决办法吗? 有什么建议吗? 谢谢文森特

  • 包括我在内的一些人一直在努力将不同模块(JAR)中的实体合并到一个持久单元中(特别是使用JavaSE,例如这里的JPA2.0:自动将实体类添加到PersistenceUnit(来自不同的JAR)中)。基于这些答案,没有简单直接的方法可以做到这一点。解决方案之一是在单个持久性单元文件中列出所有JAR中的所有类,但这并不是很好。我可能无意中找到了另一条路。通常,我的所有实体类都使用注释进行映射。至于解

  • 我正在使用WildFly8.1和一个包含实体的EJB项目(EJB3.2)。当尝试将实体管理器注入到我的一个bean中时,我得到了以下信息: 这是我尝试注入EntityManager的SessionBean: 我指定了以下文件,并将其放入“project-name”/ejbmodule/meta-inf。 类似问题及其解决方法 找不到持久性单元建议包含persistence.xml 在Wildfly