我的问题有点棘手,所以我会尽力使其尽可能简单:
我有两个 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) 中定义。
BUT InterventionB 还与另一个 MySQL 模式 (schema2) 中定义的 InterventionOrder 实体具有 @OneToOne 关系。 私有(private)干预订单干预订单;
我遇到以下异常:
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.projectA.InterventionA.client references an unknown entity: com.projectA.Client
所以这是我的问题:为什么我要尝试使用 Hibernate/Spring 实现甚至可能的目标?如果是的话怎么办? :-) 预先感谢您的帮助。
最佳答案
InterventionB 继承了自身与 Client 之间的一对一关系(来自 InterventionA)。为了能够定义关系,必须映射目标实体,在项目 B 中,客户端未映射,因此会出现错误。由于项目 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>
关于java - 2 个持久单元之间的 Hibernate 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4902215/