三个表的Hibernate映射建议

时间:2015-09-17 13:44:41

标签: java spring hibernate

我正在使用带有注释的hibernate的spring mvc,
我有这样的表结构,其中1个模块可以有多个权限

permissions table [perm_id, perm_name, perm_type_id, perm_created_by, perm_created_date, perm_modified_date, perm_status]
module_permissions table [mp_id, mp_mod_id, mp_perm_id, mp_created_by, mp_created_date, mp_modified_date, mp_status]
modules table [mod_id, mod_name, mod_icon, mod_created_date, mod_modified_date, mod_status]

首先创建所有权限。

因此,每次用户创建新模块时,都会为该模块分配权限。

这里,最简单的方法是为每个权限使用for循环,并在映射表中输入映射表中所有必需的列。

但我想有一些更好的方法,比如使用onetomany mapping或者其他     任何人都可以建议我在这里使用哪种映射?

我在模块实体

中尝试了这种映射
@Transient
private List<Long> permissions;

@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="mp_mod_id")
private Set<ModulePermissionMpg> modulePermissionMpg;
//getter and setter

我的module_permission_mapping有以下映射

@ManyToOne
private ModuleMst moduleMst;

这是正常的,你可以在这里看到

Hibernate: insert into a_modules (mod_created_date, mod_icon, mod_modified_date, mod_name, mod_status) values (?, ?, ?, ?, ?)
Hibernate: insert into a_module_permissions (moduleMst_mod_id, mp_created_by, mp_created_date, mp_mod_id, mp_modified_date, mp_perm_id, mp_status) values (?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into a_module_permissions (moduleMst_mod_id, mp_created_by, mp_created_date, mp_mod_id, mp_modified_date, mp_perm_id, mp_status) values (?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into a_module_permissions (moduleMst_mod_id, mp_created_by, mp_created_date, mp_mod_id, mp_modified_date, mp_perm_id, mp_status) values (?, ?, ?, ?, ?, ?, ?)
Hibernate: update a_module_permissions set mp_mod_id=? where mp_id=?
Hibernate: update a_module_permissions set mp_mod_id=? where mp_id=?
Hibernate: update a_module_permissions set mp_mod_id=? where mp_id=?

所以现在我的问题是,当我删除单个模块时,如何从映射表中删除所有映射的enties?

0 个答案:

没有答案
相关问题