2016-08-03 1 views
0

私は同じSQLスキーマ同じSQLスキーマを持つhibernate内の4つのテーブルを持つ1つのエンティティクラスをどのようにマップするのですか?

user_1 
+------+--------+----------------------+ 
| code | name | pass     | 
+------+--------+----------------------+ 
| 1 | rajiv | 12345    | 
+------+--------+----------------------+ 

user_2 
+------+--------+----------------------+ 
| code | name | pass     | 
+------+--------+----------------------+ 
| 1 | rajiv1 | 12345    | 
+------+--------+----------------------+ 

user_3 
+------+--------+----------------------+ 
| code | name | pass     | 
+------+--------+----------------------+ 
| 1 | raji2 | 12345    | 
+------+--------+----------------------+ 


user_4 
+------+--------+----------------------+ 
| code | name | pass     | 
+------+--------+----------------------+ 
| 1 | raji3 | 12345    | 
+------+--------+----------------------+ 

との4つのテーブルを持っている私は一つだけを定義することができるようにどのような方法があり、これらのテーブル

4つのエンティティクラスを作りたいいけませんEntityクラスと私は

に私が欲しい方 テーブルからデータを取得できるように、そのエンティティに すべての4つのテーブルをマッピング

答えて

0

データベースがビューをサポートする場合は、4つのテーブルすべてのデータを含むビューを作成し、このビューを1つのエンティティにマップすることをお勧めします。これは、4つのテーブルを1つのエンティティにマッピングしようとするより簡単でクリーンな方法です。

0

エンティティとの関連付けを作成するときに、1つのテーブルを作成してそれに属性usernumberを追加しないと、それぞれが異なるユーザー番号を持ち、すべてが同じテーブルにマップされます。

あなたのエンティティは、各ユーザーテーブルとの関連を持っている場合は別の方法として、クラスのユーザーを作成し、その埋め込みが注釈「@Embeddable」を使用して作る、あなたのエンティティでは、列の名前を上書き

  @AttributeOverrides({ 
     @AttributeOverride(name = "code",[email protected](name="user1_code"))}) 
     private User user1; 

     @AttributeOverrides({ 
     @AttributeOverride(name = "code",[email protected](name="user2_code"))}) 
     private User user2; 

(注)この別のテーブルにマップするのではなく、各ユーザーの列をエンティティにマージします

関連する問題