合并不同的持久性单元

时间:2014-04-09 07:53:47

标签: java spring maven jpa eclipselink

我正在开发一个带有spring和vaadin的maven模块化项目,该项目具有以下结构

|-- parent
`-- pom.xml
    |-- model1
    |   `-- pom.xml
    |-- model2
         -- pom.xml
    |-- services
         -- pom.xml
    |-- web-app
         -- pom.xml

model1和model2是我用这种方式修改的两个maven-archetype-quickstart

|-- model1
    |--src
        |--main
            |--java
        |--main
            |--resources
                |-- META-INF
                    -- persistence.xml

|-- model2
    |--src
        |--main
            |--java
        |--main
            |--resources
                |-- META-INF
                    -- persistence.xml

此外,在model2 pom中,我有这种依赖

    <dependency>
        <groupId>it.mycompany</groupId>
        <artifactId>model1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

持久性文件按以下方式定义

Model1 persistence.xml

<persistence>
<persistence-unit name="model1Unit">

  <class>it.mycompany.User</class>
  <class>it.mycompany.UserDetail</class>
  <class>it.mycompany.Address</class>
  <class>it.mycompany.Agent</class>
  <class>it.mycompany.Agency</class>

  // and more others

</persistence-unit>

Model2 persistence.xml

persistence>
<persistence-unit name="model2Unit">

  <class>it.mycompany.Agreement</class>
  <class>it.mycompany.AgreementDetail</class>

  // and more others

</persistence-unit>

现在我的麻烦是,在model2项目的映射中,我想做以下事情:

    @Entity
    public class Agreement{

    @Id
    @GeneratedValue
    private long id;

    private String description;

    @ManyToOne
    private Agent agent;

}

但代理实体包含在model1项目/数据源中。实际上我想在model2项目中使用model1项目的某个实体来避免 重新创造它们。

这可能吗? 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试在Model2 persistence.xml中导入包含jar的实体,而无需重新创建它们。

<jar-file>Model_1_Entity.jar</jar-file>

答案 1 :(得分:0)

我使用Composite Persistence Units

解决了问题