web-dev-qa-db-de.com

So erstellen Sie einen zusammengesetzten Schlüssel für den Ruhezustand mithilfe von Anmerkungen

Ich versuche, mit hibernate annotations Daten in eine MySQL database - Tabelle einzufügen, für die kein Primärschlüssel definiert ist.

Die Tatsache ist jedoch, dass 2 Felder dieser Tabelle zusammen in der Tabelle eindeutig sind. Wie kann ich dasselbe mit der Annotation im Ruhezustand erreichen?.

hier ist mein Code ..

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

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

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

Sie können @Embeddeble und @EmbeddedId, um einen zusammengesetzten Schlüssel zu erstellen und ihn Ihrer Entität zuzuordnen. Beispielsweise:

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

Verwenden Sie dann RolesMenuItems in Ihrem Java) - Code, um Entitäten auf übliche Weise beizubehalten.

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

Bearbeiten: So behalten Sie die Entität bei:

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

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

em.persist(roleItem);
61
Viral Patel