我正在尝试使用hibernate annotations
将数据插入到没有定义主键的MySQL database
表中。
然而事实是该表的2个字段在表中是唯一的。我可以使用hibernate注释实现相同的吗?
这是我的代码..
@Entity
@Table(name = "RolesMenuItems")
public class RolesMenuItems {
@Column(name = "RoleID")
private String roleID;
@Column(name = "MenuItemID")
private String menuItemID;
/*setter getter methods */
}
答案 0 :(得分:61)
您可以使用@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);