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
JPA中的多态关联_Jpa - Fatal编程技术网

JPA中的多态关联

JPA中的多态关联,jpa,Jpa,我喜欢在数据库中有一个表地址和多个不相关的实体,例如User、Office和ADDRESS实体有一对多的关系。简而言之,我的实体看起来就像 @Entity public class Address { @Id private long id; @Column private String entityType; // served as discriminator e-g User,Office ... @Column private long entityId; // serve

我喜欢在数据库中有一个表地址和多个不相关的实体,例如User、Office和ADDRESS实体有一对多的关系。简而言之,我的实体看起来就像

@Entity 
public class Address {

@Id 
private long id;

@Column 
private String entityType; // served as discriminator e-g User,Office ...

@Column 
private long entityId; // served as foreign key

... other address columns    
}
用户类

public class User {

@Id 
private long id;

@OneToMany
private List<Adress> addresses;t

}
公共类用户{
@身份证
私人长id;
@独身癖
私有列表地址;t
}
办公室类

@Entity
public class Office {
   @Id 
    private long id;
    
    @OneToMany
    private List<Adress> addresses;
    
}
@实体
公课办公室{
@身份证
私人长id;
@独身癖
私人名单地址;
}

我尝试了@Any of Hibernate,但这对一对多关系没有帮助。它要么有多对一的关系,要么有多对多的关系。在JPA中实现这一点的最佳方法是什么。

通常,方法是使您的地址成为可嵌入的,但这取决于用例。如果你的地址有自己的标识,我可以理解,但是你能告诉我们你的数据库表是什么样子吗?因为外键只能指向一个其他表
@embeddeble
将使地址表关系为一对一,但在我们的例子中,一个人可以有多个地址,例如邮件地址、账单地址等。地址表将有primarykey=id、外键=entityType、entityId、,一个字符串字段,用于标识地址、类型等。正确的索引编辑似乎与以下操作相同: