我的问题有点棘手,所以我会尽量让它变得简单:
我有两个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实现甚至可能?如果有,怎么样? :-) 提前感谢您的帮助。
答案 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>