Cómo crear una clave compuesta de hibernación usando anotaciones


Estoy tratando de usar hibernate annotations para insertar datos en una tabla MySQL database que no tiene una clave primaria definida.

Sin embargo, el hecho es que 2 campos de esa tabla juntos son únicos en la tabla.¿cómo puedo lograr lo mismo usando la anotación de hibernación?.

Aquí está mi código..

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

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

       @Column(name = "MenuItemID")
       private String menuItemID;
  /*setter getter methods */
 }
Author: chŝdk, 2012-12-18

1 answers

Puede usar @Embeddeble y @EmbeddedId para crear una clave compuesta y mapearla con su Entidad. Por ejemplo:

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

Luego use RolesMenuItems en su código Java para persistir entidades de la manera habitual.

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

Editar: Para persistir la entidad:

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

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

em.persist(roleItem);
 59
Author: Viral Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-18 16:20:09