如何使用注释创建休眠复合键
Posted
技术标签:
【中文标题】如何使用注释创建休眠复合键【英文标题】:How to create hibernate composite key using annotations 【发布时间】:2012-12-05 20:35:42 【问题描述】:我正在尝试使用hibernate annotations
将数据插入到未定义主键的mysql database
表中。
然而事实是该表的 2 个字段在表中是唯一的。我如何使用休眠注释实现相同的功能?
这是我的代码..
@Entity
@Table(name = "RolesMenuItems")
public class RolesMenuItems
@Column(name = "RoleID")
private String roleID;
@Column(name = "MenuItemID")
private String menuItemID;
/*setter getter methods */
【问题讨论】:
【参考方案1】:您可以使用@Embeddeble
和@EmbeddedId
创建复合键并将其映射到您的实体。例如:
@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 */
然后在您的 Java 代码中使用 RolesMenuItems
以常规方式持久化实体。
参考:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e535
编辑: 持久化实体:
RolesMenu roleMenu = new RolesMenu();
roleMenu.setRoleID(...);
roleMenu.setMenuItemID(...);
RolesMenuItems roleItem = new RolesMenuItems();
roleItem.setRoleMenu( roleMenu );
em.persist(roleItem);
【讨论】:
好的,谢谢..但是我怎样才能插入 roleID 和 menuItemID 的值..你能告诉我吗?? 更新了答案。请看一下。 RolesMenu 类中有 getter setter 方法吗?? 如何为 roleID,menuItemID 指定列名? 我们可以使用生成策略生成复合键吗?我的意思是roleID
和 menuItemID
作为自动增量。我想是的,我们可以做到。以上是关于如何使用注释创建休眠复合键的主要内容,如果未能解决你的问题,请参考以下文章