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