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

标签 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、InterventionBClient 均在同一 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/

相关文章:

java - 明确转换: java时发生未知错误

java - AWS RDS CPU 利用率 100%

java - EasyMock 和 Spring Autowired

java - SpringRunner 是否应该在 Spring Boot 中与 Junit 5 一起使用

java - 已解决 Java Spark 中缺少属性 newvalue#10

java - Camel sftp 制作者。如何从单个处理器将多个文件放入不同的 sftp 文件夹

hibernate - JPA 脏检查

java - Spring ModelAttribute正确解析

java - NetBeans 如何处理 IntelliJ 注释?

java - Hashtags 的最佳 JPA 实体模型