添加数据库关系信息以在Java数据库中映射?

时间:2015-01-20 23:53:56

标签: java database hibernate

我正在使用Hibernate创建一个我将在我的Java应用程序中使用的数据库。

我有两个实体:

角色[ ID ,姓名,说明]

UIElement [ ID ,姓名,说明]

他们有很多关系。即角色可以有许多UIElements,UIElement可以设置为多个角色。这两者在下表中相关:

Role_UI [ Role_Id UI_ID ,属性]

属性是varchar(20)或String,例如,Read / Create / Edit

在我的java应用程序中(在角色对象中,因为总拥有权)我有多对多的设置如下:

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "role_ui",
        joinColumns = { @JoinColumn(name = "role_id", nullable = false, updatable = false) },
        inverseJoinColumns = { @JoinColumn(name = "ui_id", nullable = false, updatable = false) }
)
private Map<UIElement, String> uiElements = new HashMap<>();

这是对的吗?地图中的字符串是数据库中的属性字段吗?

2 个答案:

答案 0 :(得分:0)

您应该为ROLE_UI表创建一个单独的实体,并将many-many分成两个一对多关联。表示ROLE_UI表的实体具有附加字段(属性)。

Java Persistence/ManyToMany

答案 1 :(得分:0)

我认为这是一种解决方法。

您需要创建一个新实体:

Role_UI [Role_Id,UI_ID,property]

@Entity
class Role_UI{

   @ManyToOne
   Role role;
   @ManyToOne
   UIElement element;
   @Enumeration
   Permission property;
}


enum Permission{
   CREATE, EDIT, READ;
}