2012-11-11 72 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; 
    } 
} 

和類地址保持不變。