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 */
}
@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
Edit:エンティティを永続化するには:
RolesMenu roleMenu = new RolesMenu();
roleMenu.setRoleID(...);
roleMenu.setMenuItemID(...);
RolesMenuItems roleItem = new RolesMenuItems();
roleItem.setRoleMenu( roleMenu );
em.persist(roleItem);