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

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

西门旻
2023-03-14
问题内容

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

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

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

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

所以..如何才能将所有带@Entity注释的类加载到我的Web应用程序中,而不必在内部persistence.xml(如此处)定义它们,而是通过组件扫描来定义它们?
这似乎是个主意,尽管我不知道如何使用和测试它。

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


问题答案:

我们使用类似的模块布局,但是我们将持久性上下文放置在应用程序的战争部分,并将实体管理器注入到模块的DAO中。除单元测试外,这些模块没有PU。我们这样做是因为担心跨多个模块的事务可能会引起麻烦。

在DAO中

@PersistenceContext
private EntityManager em;

在persistance.xml中,您需要使用元素来注册所有实体。

<persistence-unit name="myPU">
    <class>com.Entity1</class>      
<class>com.Entity2</class>

等等



 类似资料:
  • 主要内容:1. 属性DOM Entity接口表示XML文档中已解析或未解析的已知实体。 从继承的属性包含实体的名称。 对象没有任何父节点,并且其所有后继节点都是只读的。 1. 属性 下表列出了对象的属性 - 属性 类型 描述 inputEncoding 它指定了外部解析实体使用的编码。如果它是来自内部子集的实体或者如果它是未知的,则其值为。 notationName 对于未解析的实体,它给出了表示法的名称,并且对于已

  • 我需要创建一个jpa自定义查询,使用几个表上的联接来获取记录。 以下是我想要达到的目标: 对很少的参数进行数据排序(在运行时决定) 使用where子句进行筛选(在运行时决定) 示例: @query(value=“从用户a中选择a.name,b.city,c.reason在a.id=b.id上连接地址b在a.id=c.id上连接测试c 我无法为其创建常规查询。 任何其他的方法对我来说也是可以接受的来

  • 问题内容: 事实证明,以下示例在使用mysql 5.x时有效,但是在使用oracle 10g数据库时无效。 有没有一种方法可以定义独立于数据库技术的唯一标识符字段? 我已经在hibernate状态下对此进行了测试,并且只有在使用Oracle时才会发生以下异常: 问题答案: 我已经研究过使用,它的确是更好的选择。它允许JPA实现选择最适合您所使用的数据存储系统的任何东西。

  • 我需要在我的数据库中创建多个多对多的关系。 有一个“主”表,我们称之为“项目”。 然后有3个表包含“选项”。 假设我们有:品类、地域、用户。这些保存的唯一信息是项目的名称和ID。 可以将多个类别、区域和用户分配给多个项目。 因此,我有两个选项来创建这种关系: 1)为每个'选项'表创建关系表。每个表包含两列:project_id和category_id、region_id或user_id。使用这种方

  • 问题内容: 我正在建模一个游戏,其中多个玩家(线程)同时移动。玩家当前所在位置的信息被存储两次:该玩家具有一个变量“ hostField”,该变量引用板上的一个字段,每个字段都有一个ArrayList,用于存储当前位于该字段的玩家。 我对拥有冗余信息的事实不是很满意,但是我发现如果不遍历大数据集就无法避免这种情况。 但是,当玩家从一个字段移到另一个字段时,我想确保(1)冗余信息保持链接(2)此刻没