如何使用注释创建hibernate组合键 [英] How to create hibernate composite key using annotations

查看:120
本文介绍了如何使用注释创建hibernate组合键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用 hibernate annotations 将数据插入到 MySQL数据库表中,该表没有主键定义。然而事实是这个表的2个字段在表中是唯一的,我可以使用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 创建一个组合键并将其与您的实体。例如:

  @Embeddable 
public class RolesMenu {
@Column(name =RoleID)
私人字符串roleID;

@Column(name =MenuItemID)
private String menuItemID;
$ b $ // getter,setter方法
}

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

@EmbeddedId
私人RolesMenu roleMenu;

setter getter methods

code>

然后在您的Java代码中使用 RolesMenuItems 以通常方式保存实体。

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

编辑:
坚持实体:

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

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

em.persist(roleItem);


I am trying to use hibernate annotations to insert data to a MySQL database table which doesn't have a primary key defined.

However the fact is 2 fields of that table together are unique in the table.how can i achieve the same using hibernate annotation?.

here is my code..

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

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

       @Column(name = "MenuItemID")
       private String menuItemID;
  /*setter getter methods */
 }

解决方案

You can use @Embeddeble and @EmbeddedId to create a composite key and map it with your Entity. For example:

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

Then use RolesMenuItems in your Java code to persist entities in usual way.

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

Edit: To persist the entity:

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

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

em.persist(roleItem);

这篇关于如何使用注释创建hibernate组合键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆