2012-03-02 12 views
1

2つ(またはそれ以上)のテーブルからデータを取得するエンティティを作成できますか?2つのテーブルのデータを持つエンティティ

私はテーブルがしたい:と

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

とUserEntityを:

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

1つのテーブルのみを使用して、私が持っている:

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

これは可能ですが、1つのテーブルにすべてを保存するのではなく、そのようにするのはなぜですか? –

+0

お返事ありがとうございます。これは、すべてのユーザーがアドレスを取得するわけではないからです。だから私は、より良いものは2つのテーブルに格納することです。 – Dan

+0

その場合、ユーザーは別のアドレスエンティティとOneToOneの関連付けを持つべきではありませんか?アドレスのすべてのフィールドをUserエンティティに直接格納する場合、自然マッピングはフィールドをuserテーブルに格納することです。 –

答えて

1

はい。しかし、私は各テーブルのための1つのJavaクラスをお勧めします。 UserAddressを入力して、結合テーブル@JoinColumnを使用して、テーブルが結合されている列を指定します。

2つの別々のクラスを必要としない場合は、ResultTransformerを使用できます。

関連する問題