24

hibernate annotationsを使用して、プライマリキーが定義されていないMySQL databaseテーブルにデータを挿入しようとしています。注釈を使用してhibernate複合キーを作成する方法

しかし、実際には、そのテーブルの2つのフィールドが一緒にtable.how内で一意です私は休止状態の注釈を使用して同じを達成することはできますか?ここ

は私のコード..です

@Entity 
@Table(name = "RolesMenuItems") 
    public class RolesMenuItems { 

     @Column(name = "RoleID") 
     private String roleID; 

     @Column(name = "MenuItemID") 
     private String menuItemID; 
    /*setter getter methods */ 
} 

答えて

55

あなたは複合キーを作成するために@Embeddeble@EmbeddedIdを使用して、エンティティとそれをマッピングすることができます。たとえば:

@Embeddable 
public class RolesMenu { 
    @Column(name = "RoleID") 
    private String roleID; 

    @Column(name = "MenuItemID") 
    private String menuItemID; 

    //getter, setter methods 
} 

@Entity 
@Table(name = "RolesMenuItems") 
public class RolesMenuItems { 

    @EmbeddedId 
    private RolesMenu roleMenu; 

    /*setter getter methods */ 
} 

はその後、通常の方法でエンティティを永続化するJavaコードでRolesMenuItemsを使用しています。

参考:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e535

編集: エンティティを永続化するために:

RolesMenu roleMenu = new RolesMenu(); 
roleMenu.setRoleID(...); 
roleMenu.setMenuItemID(...); 

RolesMenuItems roleItem = new RolesMenuItems(); 
roleItem.setRoleMenu(roleMenu); 

em.persist(roleItem); 
+0

OK感謝は、私はあなたが私に教えてくださいroleIDとmenuItemID..canの値を挿入することができますどのようにyou..but? ? – edaklij

+0

答えを更新しました。 Plは見ている。 –

+0

にRolesMenuクラスのゲッターセッターメソッドがありますか? – edaklij

関連する問題