2012-03-02 17 views
1

我可以創建一個將從2個(或更多)表中檢索數據的實體嗎?來自兩個表的數據的實體

我想有表:

 
user: id, name, password 
user_address: idUser, street, city 

而且UserEntity有:

int: id 
String: name, password, street, city 

當僅使用一個表,我有:

UserEntity:

@Entity 
public class UserEntity { 
    @Id 
    @GeneratedValue 
    @Column(name = "id") 
    private int id; 

    @Column(name = "user") 
    private String user; 

    @Column(name = "password") 
    private String password; 

    //+ getter + setters 
} 

以及一種方法使用代碼從DB加載用戶:

String queryString = "FROM UserEntity WHERE user = :user AND password = :password"; 
Query query = session.createQuery(queryString); 
query.setString("user", userForm.getUser()); 
query.setString("password", userForm.getPassword()); 
UserEntity userEntity = (UserEntity) query.uniqueResult(); 
+0

這是可能的,但爲什麼你會這樣做,而不是將所有內容都存儲在一張表中? – 2012-03-02 18:30:16

+0

感謝您的回答。這是因爲 - 並非每個用戶都有地址。所以我最好把它存放在兩張桌子裏。 – Dan 2012-03-02 18:34:54

+0

如果是這樣,用戶不應該與另一個地址實體有OneToOne關聯嗎?如果將地址的每個字段直接存儲在用戶實體中,則自然映射就是將字段存儲在用戶表中。 – 2012-03-02 18:40:34

回答

1

是的。但是我會爲每個表建議一個java類。 UserAddress,然後您想使用連接@JoinColumn註釋來指定表連接的列。

如果你不想要兩個單獨的類,你可以使用ResultTransformer。

相關問題