Hibernate 冬眠';s OneToOne注释跨多个联接表工作

Hibernate 冬眠';s OneToOne注释跨多个联接表工作,hibernate,one-to-one,Hibernate,One To One,我有三个实体:用户、公司和地址。每个用户都有一个地址,每个公司都有一个地址。每个实体都有一个单独的表。我希望地址不可能同时属于用户和公司 用户和公司联接列上的@OneToOne注释都有效吗 @Table(name = "users") public class User { ... @OneToOne @JoinColumn(name = "address_id", insertable = false, updatable = false) private Ad

我有三个实体:用户、公司和地址。每个用户都有一个地址,每个公司都有一个地址。每个实体都有一个单独的表。我希望地址不可能同时属于用户和公司

用户和公司联接列上的@OneToOne注释都有效吗

@Table(name = "users")
public class User {
    ...
    @OneToOne
    @JoinColumn(name = "address_id", insertable = false, updatable = false)
    private Address address;
    ...
}



@Table(name = "companies")
public class Company {
    ...
    @OneToOne
    @JoinColumn(name = "address_id", insertable = false, updatable = false)
    private Address address;
    ...
}

分为两类,一类是居住地址,一类是营业地址。继承似乎是一个很好的方法。我的例子是一个简化的版本。实际示例涉及10个表,所有表都引用一个其他表。这个表非常大和复杂,我不想保留10个副本。另外,我的数据库不支持正确的表继承。听起来像是继承——或者某种连接。如果你有一个现有的数据库结构,你应该发布它。继承不是一个数据库概念。