你需要添加一个连接表(域类)存储在一个特定的周期用户和角色之间的映射。这里有一个这样的类的例子,有一些可能有用的帮助方法
class UserRole implements Serializable {
User user
Role role
Cycle cycle
static UserRole create(User user, Role role, Cycle cycle, boolean flush = false) {
new UserRole(user: user, role: role, cycle: cycle).save(flush: flush, insert: true)
}
static boolean remove(User user, Role role, Cycle cycle, boolean flush = false) {
UserRole instance = UserRole.findByUserAndRoleAndCycle(user, role, cycle)
if (!instance) {
return false
}
instance.delete(flush: flush)
true
}
static void removeAll(User user) {
executeUpdate 'DELETE FROM UserRole WHERE user=:user', [user: user]
}
static void removeAll(Role role) {
executeUpdate 'DELETE FROM UserRole WHERE role=:role', [role: role]
}
static void removeAll(Cycle cycle) {
executeUpdate 'DELETE FROM UserRole WHERE cycle=:cycle', [cycle: cycle]
}
static mapping = {
id composite: ['role', 'user', 'cycle']
version false
}
}
对你的假设略有修正。 用户可以有很多周期和很多角色, 周期可以有很多用户,每个用户在一个特定的周期可以有很多角色。 JPG)将帮助你理解我的意思。 此外,用户和角色表是主表,他们不应该属于任何其他表。那就是用户和角色应该能够独立创建。 创建新周期后,您应该能够选择现有员工和现有角色,并将此用户角色组合分配给新创建的周期。 – 2014-09-23 07:21:13
因此,如果用户可以有多个周期并且周期可以有多个用户在它们之间创建一个表,例如UserCycle,它将包含对特定用户和一个角色的引用。 – MNie 2014-09-23 07:33:58
此链接将有所帮助: https://grails.org/Many-to-Many+Mapping+without+Hibernate+XML http://chrisbroadfoot.id.au/2008/07/19/many-to -many-relationship-mapping -gorm-grails/ – MNie 2014-09-23 07:54:53