2个持久性单元之间的Hibernate链接?

时间:2011-02-04 19:43:05

标签: java hibernate spring jpa-2.0

我的问题有点棘手,所以我会尽量让它变得简单:

我有两个maven项目:ProjetA和ProjectB。

ProjectA具有以下 persistence.xml 文件:

<persistence-unit name="ProjectAUnit" transaction-type="RESOURCE_LOCAL">
        <class>com.projectA.Client</class>
        <class>com.projectA.InterventionA</class>
    </persistence-unit>

InterventionA与客户实体有OneToOne关系。

ProjectB具有以下 persistence.xml 文件:

<persistence-unit name="projectBUnit" transaction-type="RESOURCE_LOCAL">
        <class>com.projectB.InterventionB</class>
        <class>com.projectB.InterventionOrder</class>
</persistence-unit>

InterventionB扩展了InterventionA类(包含在.jar依赖项中):

所有3个类 InterventionA,InterventionB Client 都在同一个MySQL模式(schema1)中定义。

但是 InterventionB还与另一个MySQL架构(schema2)中定义的 InterventionOrder 实体建立了@OneToOne关系。     private InterventionOrder interventionOrder;

我收到以下异常:

org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.projectA.InterventionA.client references an unknown entity: com.projectA.Client

所以这是我的问题:为什么我试图用Hibernate / Spring实现甚至可能?如果有,怎么样? :-) 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

干预B继承了自身与客户之间的一对一关系(来自InterventionA)。为了能够定义目标实体必须映射的关系,在Project B Client中没有映射,因此错误。由于项目B依赖于项目A,您只需将目标实体添加到项目B的persistence.xml:

<persistence-unit name="projectBUnit" transaction-type="RESOURCE_LOCAL">
    <class>com.projectB.InterventionB</class>
    <class>com.projectB.InterventionOrder</class>

    <class>com.projectA.Client</class>
</persistence-unit>