2015-01-20 72 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