如何使用注释创建hibernate组合键

eda*_*lij 27 hibernate hibernate-mapping hibernate-annotations queryover

我试图用于hibernate annotations将数据插入到MySQL database没有定义主键的表中.

但事实上,该表的2个字段在表中是唯一的.我可以使用hibernate注释实现相同吗?

这是我的代码..

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

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

       @Column(name = "MenuItemID")
       private String menuItemID;
  /*setter getter methods */
 }
Run Code Online (Sandbox Code Playgroud)

Vir*_*tel 61

您可以使用@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 */
 }
Run Code Online (Sandbox Code Playgroud)

然后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);
Run Code Online (Sandbox Code Playgroud)