将数据库关系信息添加到 Java 数据库中的映射?
Adding database relational information to map in Java database?
我正在使用 Hibernate 创建一个数据库,我将在我的 Java 应用程序中使用它。
我有两个实体:
角色[ID、姓名、描述]
UIElement[ID, 名称, 描述]
它们之间存在多对多关系。即一个角色可以有多个 UIElement,一个 UIElement 可以设置为多个角色。两者的关系如下table:
Role_UI[Role_Id, UI_ID, 属性]
属性 是 varchar(20) 或字符串,例如 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<>();
这是正确的吗?地图中的字符串是否是数据库中的 属性 字段?
您应该为 ROLE_UI table 创建一个单独的实体,并将多对多关联拆分为两个一对多关联。表示 ROLE_UI table 的实体具有附加字段 (属性).
我认为这是解决方法。
您需要创建一个新实体:
Role_UI[Role_Id, UI_ID, 属性]
@Entity
class Role_UI{
@ManyToOne
Role role;
@ManyToOne
UIElement element;
@Enumeration
Permission property;
}
enum Permission{
CREATE, EDIT, READ;
}
我正在使用 Hibernate 创建一个数据库,我将在我的 Java 应用程序中使用它。
我有两个实体:
角色[ID、姓名、描述]
UIElement[ID, 名称, 描述]
它们之间存在多对多关系。即一个角色可以有多个 UIElement,一个 UIElement 可以设置为多个角色。两者的关系如下table:
Role_UI[Role_Id, UI_ID, 属性]
属性 是 varchar(20) 或字符串,例如 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<>();
这是正确的吗?地图中的字符串是否是数据库中的 属性 字段?
您应该为 ROLE_UI table 创建一个单独的实体,并将多对多关联拆分为两个一对多关联。表示 ROLE_UI table 的实体具有附加字段 (属性).
我认为这是解决方法。
您需要创建一个新实体:
Role_UI[Role_Id, UI_ID, 属性]
@Entity
class Role_UI{
@ManyToOne
Role role;
@ManyToOne
UIElement element;
@Enumeration
Permission property;
}
enum Permission{
CREATE, EDIT, READ;
}