Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA:如何将@OneToMany与不同的目标类型一起使用_Jpa - Fatal编程技术网

JPA:如何将@OneToMany与不同的目标类型一起使用

JPA:如何将@OneToMany与不同的目标类型一起使用,jpa,Jpa,我有一个实体Y,希望在多个不相关的实体X1,X2。。。这种关系应该是双向的。这可以通过@ManyToOne/@OneToMany实现吗?我试过了 @Entity class X1 { @Id String uuid_; @OneToMany(mappedBy="owner_") List< Y > yList_; } @Entity class X2 { @Id String uuid_; @OneToMany(mappedBy="ow

我有一个实体Y,希望在多个不相关的实体X1,X2。。。这种关系应该是双向的。这可以通过@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_;
}
@实体
X1类{
@身份证
字符串uuid_uid;
@OneToMany(mappedBy=“所有者”)
列表yList;
}
@实体
X2类{
@身份证
字符串uuid_uid;
@OneToMany(mappedBy=“所有者”)
列表yList;
}
@实体
Y类{
@身份证
字符串uuid_uid;
@许多酮
字符串所有者;
}
但这不起作用,因为字符串不是实体,不能用作关系属性

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

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

因为X1和X2是“不相关的类型”,所以无法在单个映射中合并它们。您需要在Y中有两个不同的
@ManyToOne
映射:

@Entity
class Y {
    @Id
    String uuid_;

    @ManyToOne
    X1 owner1_;

    @ManyToOne
    X2 owner2_;
}
当然,您需要在
@OneToMany
映射中相应地调整
mappedBy
属性的值