24

Próbuję użyć hibernate annotations do wstawienia danych do tabeli MySQL database, która nie ma zdefiniowanego klucza podstawowego.Jak utworzyć klucz złożony hibernacji przy użyciu adnotacji

Jednak faktem jest, że 2 pola tej tabeli są unikalne w tabeli. Jak mogę to osiągnąć za pomocą adnotacji hibernacji ?.

tutaj jest mój kod ..

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

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

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

Odpowiedz

55

Można użyć @Embeddeble i @EmbeddedId utworzyć klucz kompozytowego i mapować je z podmiotem. Na przykład:

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

Następnie użyj RolesMenuItems w kodzie Java, aby utrzymywać się podmioty w zwykły sposób.

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

Edit: utrzymują się podmiot:

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

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

em.persist(roleItem); 
+0

OK dziękuję you..but jak mogę wstawić wartości RoleId i menuItemID..can możesz mi powiedzieć? ? – edaklij

+0

Zaktualizowano odpowiedź. Pl, spójrz. –

+0

ma wszelkie metody ustawiające getter w klasie RolesMenu? – edaklij

Powiązane problemy