Подтвердить что ты не робот

Как создать комбинированный ключ спящего режима с помощью аннотаций

Я пытаюсь использовать hibernate annotations для вставки данных в таблицу MySQL database, в которой не указан первичный ключ.

Однако факт состоит из двух полей этой таблицы, которые уникальны в таблице. Как я могу добиться того же, используя аннотацию спящего режима?.

вот мой код..

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

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

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

Ответ 1

Вы можете использовать @Embeddeble и @EmbeddedId, чтобы создать составной ключ и сопоставить его с вашим Entity. Например:

@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

Edit: Чтобы сохранить объект:

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

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

em.persist(roleItem);