27

主キーが定義されていないテーブルにhibernate annotationsデータを挿入しようとしています。MySQL database

ただし、実際には、そのテーブルの 2 つのフィールドが一緒にテーブル内で一意です。休止状態の注釈を使用して同じことを達成するにはどうすればよいですか?

ここに私のコードがあります..

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

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

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

1 に答える 1

62

@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 */
 }

次にRolesMenuItems、Javaコードで使用して、通常の方法でエンティティを永続化します。

参照: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);
于 2012-12-18T15:45:03.983 に答える