0

我有一个实体 Y,想在多个不相关的实体 X1、X2、... 中嵌入一个 Y 列表。关系应该是双向的。这可以用@ManyToOne/@OneToMany 完成吗?我试过了

@Entity
class X1 {
   @Id
   String uuid_;

   @OneToMany(mappedBy="owner_")
   List< Y > yList_;
}

@Entity
class X2 {
   @Id
   String uuid_;

   @OneToMany(mappedBy="owner_")
   List< Y > yList_;
}

@Entity
class Y {
   @Id
   String uuid_;

   @ManyToOne
   String owner_;
}

但这不起作用,因为 String 不是实体,不能用作关系属性。

我还尝试将“String owner_”替换为“XBase owner_”,使用 XBase 作为 X1 和 X2 的 @MappedSuperClass。这产生了相同的错误:“[class Y] 使用非实体 [class XBase] 作为关系属性 [field owner_] 中的目标实体”。

我想知道在关系的“一”端是否有可能有不同的不相关类型。您将如何与 JPA 实现这种关系?

4

1 回答 1

0

由于 X1 和 X2 是“不相关的类型”,因此无法将它们合并到一个映射中。您需要@ManyToOne在 Y 中有两个不同的映射:

@Entity
class Y {
    @Id
    String uuid_;

    @ManyToOne
    X1 owner1_;

    @ManyToOne
    X2 owner2_;
}

然后当然你需要在映射mappedBy中相应地调整属性的值。@OneToMany

于 2013-11-08T16:01:05.177 回答