2015-01-20 89 views
2

我正在使用Hibernate创建一个数据库,我将在我的Java应用程序中使用它。添加数据库关系信息以在Java数据库中映射?

我有两个实体:

作用[ID,名称,描述]

的UIElement [ID,名称,描述]

他们有一个多对多的关系。即一个角色可以有许多UIElement,并且一个UIElement可以被设置为多个角色。两个下表中的关系:

Role_UI [ROLE_IDUI_ID,化学性质]

属性是一个varchar(20)或字符串,例如,读/创建/编辑

在我的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<>(); 

这是正确的吗?请问地图中的字符串是来自数据库的属性字段?

回答

0

我认为这是解决办法。

你需要创建一个新的实体:

Role_UI [ROLE_ID,UI_ID,财产]

@Entity 
class Role_UI{ 

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


enum Permission{ 
    CREATE, EDIT, READ; 
} 
0

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

Java Persistence/ManyToMany