2012-11-11 71 views
2

我有班级用户和班级地址。 地址只包含4属性:如何在这种情况下定义JPA关系的类型?

publiс class Address { 

    private Long id; 
    private String country; 
    private String city; 
    private String street; 

    // getters and setters 
} 

用户的结构和:

public class User { 
    private Long id; 
    private String name; 
    private Address homeAddress; 
    private Address businessAddress; 

    // other fields and methods 
} 

什么类型的JPA的关系来选择,如何在这种情况下,当一个实体使其通过注释用户有两个(或更多)字段有一个自己的类型的一些自定义地址

如果用户只有一个地址,这将是一对多的关系。但是这个案子呢?如何在我的系统中正确定义这些对象?

我试着在地址类中创建另一个字段users

@OneToMany(mappedBy = "?") 
private List<User> users; 

但因为是在类用户地址类型的两个字段这不是我的问题的解决方案。目前尚不清楚是否需要在mappedBy注释中定义...

我将不胜感激您的任何建议!

+0

我会说这是一对一的关系。两个人都可以拥有相同的物理地址,但他们应该拥有两个分开的地址行,因为如果其中一个移动到其他地址,另一个不需要移动。 – SJuan76

回答

0
public class User { 
    private Long id; 
    private String name; 
    private Address homeAddress; 
    private Address businessAddress; 

    // other fields and methods 

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinColumn(name = "HOME_ADDRESS_ID") 
    public Address getHomeAddress() { 
     return homeAddress; 
    } 

    public void sethOMEAddress(Address homeAddress) { 
     this.homeAddress= homeAddress; 
    } 

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinColumn(name = "BUSINESS_ADDRESS_ID") 
    public Address getBusinessAddress() { 
     return businessAddress; 
    } 

    public void setBusinessAddress(Address businessAddress) { 
     this.businessAddress= businessAddress; 
    } 
} 

和类地址保持不变。