我试图用来hibernate annotations向MySQL database没有定义主键的表中插入数据。
hibernate annotations
MySQL database
但是事实是该表的两个字段一起在表中是唯一的。我如何使用hibernate注释实现相同的目的?
这是我的代码。
@Entity @Table(name = "RolesMenuItems") public class RolesMenuItems { @Column(name = "RoleID") private String roleID; @Column(name = "MenuItemID") private String menuItemID; /*setter getter methods */ }
您可以使用@Embeddeble和@EmbeddedId创建复合键,并将其与您的实体进行映射。例如:
@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 */ }
然后RolesMenuItems在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);