标准的M-M做法:
class User{
static hasMany=[roles:Role]
String name
}
class Role{
static belongsTo = User
static hasMany=[users:User]
String name
}
使用方法:
Role roleUser=new Role(name: "ROLE_USER").save()
Role roleAdmin==new Role(name: "ROLE_ADMIN").save()
User user1= new User(name: "bruce_lin_chn")
user1.addToRoles(roleUser)
user1.save()
存在的问题:
[list]
hasMany会在User和Role中创建Set(org.hibernate.collection.PersistentSet)
为了唯一性检查,增加一个Role到User要求加载所有用户角色的实例和所有其他拥有该权限的用户
存在乐观锁异常的风险
解决方案:
class User{
String name
}
class Role{
String name
}
class UserRole implements Serializable{
User user
Role role
static mapping = {
table 'user_role_mapping'
version false
id composite: ['user', 'role']
}
static Set<Role> getRoles(User user){
UserRole.findAllByUser(user).collect{it.role} as Set
}
static boolean hasRole(User user, Role role){
return UserRole.countByUserAndRole(user,role)>0
}
static beforeDeleteUser(User user){
}
static beforeDeleteRole(Role role){
}
}
分享到:
相关推荐
标题中的"grails-fck-editor-0.3.zip_grails_grails-fck-editor"表明这是一个与Grails框架相关的插件,具体来说是FCKeditor的一个版本。FCKeditor是一款广泛使用的开源富文本编辑器,它允许用户在网页上创建和编辑...
- **一对一关联**:通过`belongsTo`或`hasOne`属性实现。 - **一对多关联**:使用`hasMany`属性。 - **多对多关联**:通常通过中间表实现。 - **集合类型**:支持多种集合类型,如列表、集等。 - **组合关系**:...
`grails-doc-CN-1.0.rar` 文件包含的是 Grails 1.0 版本的中文参考文档,对于那些不熟悉英文文档或者想要深入了解 Grails 的中文用户来说,这是一个极其宝贵的资源。 文档主要涵盖以下几个关键知识点: 1. **...
4. `docs`、`grails-app`、`src`、`scripts`和`lib`目录则分别包含了插件的文档、应用代码、源代码、脚本以及依赖的库文件。 Grails Acegi 0.5插件提供了以下主要功能: - **用户认证**:支持多种认证机制,如...
总之,"grails-datastore-gorm-plugin-support-2.0.4.RELEASE.zip"提供了一个宝贵的资源,让开发者有机会学习和实践Grails的ORM功能和Android的MVC设计模式。无论是对Grails框架的探索,还是对Android开发的深化,这...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2 共两个包,解压后需要将扩展名.zip.bak改名为.zip重新解压。 http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/ e4.6/spring-tool-...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。
grails参考文档 The Grails Framework - Reference Documentation Authors: Graeme Rocher, Marc Palmer Version: 1.0.3
《深入理解Grails 1.3.7框架:源码剖析与应用实践》 Grails是一种基于Groovy语言的开源Web应用框架,它构建在Java平台之上,旨在提高开发效率,提供简洁、高效的代码生成器,以及强大的插件系统。Grails 1.3.7是该...
2. **创建新项目**:通过`grails create-app`命令创建项目,理解`grails-app`目录结构。 3. **编写Domain Class**:学习如何定义领域类,包括关系映射和验证规则。 4. **创建Controller**:了解如何创建控制器,处理...
本文将深入探讨Grails的中文文档以及“grails-fckeditor-0.9.5”插件的相关知识点。 一、Grails框架基础 1. Groovy语言:Grails的基础是Groovy,这是一种面向对象、动态类型的编程语言,语法简洁且与Java高度兼容...
grails3.2.8 part1
在`Grails` 中,`Grails-Quartz` 插件提供了集成`Quartz` 的能力,使得开发者可以在`Grails` 应用中方便地安排和执行周期性任务。 **1. QuartzGrailsPlugin.groovy** 这个文件是`Grails` 插件的核心配置文件,其中...
这个名为"grails-web-url-mappings-2.5.4.zip"的压缩包包含了Grails 2.5.4版本中的Web URL映射相关代码,让我们深入探讨这一关键组件。 Grails是一个基于Groovy语言的全栈式Java web框架,其设计理念是“简洁、生产...
以下是关于"grails-3.0.5-ga (2/2)"的详细知识点: 1. **Groovy语言**: Grails框架是用Groovy语言编写的,这是一种动态、面向对象的编程语言,与Java高度兼容,但语法更加简洁和灵活。 2. **MVC架构**: Grails遵循...
### Grails入门详解 #### 一、Grails框架概述 Grails是一个基于Java平台的开源Web应用框架,它集成了Groovy语言的强大功能与Spring框架的成熟特性,为开发者提供了高效且灵活的开发方式。根据给定文件的描述,...
标题"grails-bin-1.1"指的是Grails框架的1.1版本的二进制发行版。这个版本的Grails是一个免安装版,意味着用户可以直接将它解压到任何位置,而不需要通过传统的安装程序进行安装。 描述中的"本文件只需要放到相应...
`grails-docs-2.0.0`是Grails 2.0.0版本的官方文档,包含了丰富的指南、API参考以及国际化资源,对于学习和掌握Grails 2.0.0至关重要。 首先,`index.html`是文档的主页,通常会包含目录、介绍性内容以及如何开始的...
grails-spring-websocket ils子 2.4.x 3.2.7+ 2.5.x 4.0.0+ 安装 要将插件安装到Grails应用程序中,请将以下行添加到build.gradle依赖项部分: implementation "org.grails.plugins:grails-spring-websocket:...