Grails支持多对多关联,这种关联需要在关联的两方都定义hasMany,并在关联的被拥有方定义belongsTo: class Book {
static belongsTo = Author
static hasMany = [authors:Author]
String title
}
class Author {
static hasMany = [books:Book]
String name
}
Grials在数据库层使用连接表来映射多对多关联。关联的拥有方,在这里是Author,负责持久化这个关联,并且它是唯一可以级联保存对方的一方。
比如下面的代码可以工作,并会级联保存:
new Author(name:"Stephen King")
.addToBooks(new Book(title:"The Stand"))
.addToBooks(new Book(title:"The Shining"))
.save()
但是下面的代码只保存 Book 而不保存authors!
new Book(name:"Groovy in Action")
.addToAuthors(new Author(name:"Dierk Koenig"))
.addToAuthors(new Author(name:"Guillaume Laforge"))
.save()
这正是我们期望的行为,跟Hibernate中一样,多对多关联中只有一方可以管理关联。
分享到:
相关推荐
**Grails 框架详解** Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式...
9. **国际化与本地化**:Grails内置了i18n支持,允许开发者轻松处理多语言环境,提高应用的全球适用性。 10. **持续集成与部署**:Grails与常见的CI/CD工具如Jenkins、GitLab CI/CD等良好集成,方便自动化部署和...
注意,尽管Eclipse对Grails的支持相比IntelliJ IDEA和NetBeans可能稍显不足,但通过Groovy Eclipse插件的配置,开发者依然能在Eclipse中高效地进行Grails开发。不断更新插件和学习最佳实践将有助于提升开发体验。
总结来说,《Grails用户手册》涵盖了从项目创建到部署运行的全过程,包括Grails的基础概念、MVC架构、持久化、插件系统、视图技术、URL映射、测试策略等多个方面。通过学习和实践,开发者可以充分利用Grails的强大...
在Grails中,处理数据模型的关系是至关重要的,尤其是多对多(m:m)关系。本文将深入探讨如何使用Grails的GORM(Grails Object-Relational Mapping)API以及Ajax技术来实现这种复杂的关系。 首先,了解多对多关系的...
GORM支持基本的CRUD操作,并且在领域建模方面提供了强大的支持,包括一对一、一对多和多对多的关联。GORM支持继承,可以方便地实现模型的层次结构。GORM中的高级特性包括自定义映射选项、事务编程以及乐观锁和悲观锁...
- **集成 Hibernate**:Grails 内置对 Hibernate 的支持,简化了数据库操作。 - **脚手架支持**:提供了一套快速原型开发工具,可以自动生成基本的应用程序结构。 - **插件系统**:拥有丰富的插件生态系统,可以通过...
对于Grails开发,我们需要的是Eclipse中的Grails插件,它能够提供对Grails项目的创建、运行、调试等一系列功能。 **Grails**是基于Groovy语言的全栈式Web开发框架,它借鉴了Ruby on Rails的设计理念,提供了快速...
Grails 提供了对多语言环境的支持,通过 properties 文件管理不同语言的文本资源,便于实现应用程序的国际化。 **Grails 文档** "Grails 中文参考手册" 是一套详细的 Grails 学习资料,涵盖了框架的所有核心组件、...
压缩包内的“one2many”可能是一个示例或教程,涉及到一对一(one-to-one)、一对多(one-to-many)或多对一(many-to-one)的关系映射。在数据库设计中,这些关系是常见的实体间关联。在Grails与GORM中,处理这种...
GORM 提供了对数据库的操作接口,使得开发者可以通过面向对象的方式操作数据,减少了与SQL的直接交互,支持关系型数据库如MySQL、PostgreSQL等。 5. **Grails插件系统** Grails 的强大之处在于其丰富的插件库,如...
Grails框架集成了对Ajax的支持,使得开发者可以轻松地创建异步Web应用程序。通过Ajax,Web应用可以实现无刷新的数据更新,提高了用户交互性和应用响应速度。 #### GORM(Grails Object Relational Mapping) GORM...
一个域对象可以拥有多个其他域对象的引用,这些引用可以是“一对一”、“一对多”或“多对多”的关系。例如,在实例中,我们可以建立 Member 和 Team 之间的一对多关系,即一个 Team 对象可以拥有多个 Member 对象。...
### Grails入门指南知识点 #### 一、Grails框架简介... - 企业级应用领域对快速开发的需求将持续增长,Grails有望成为这一领域的强有力竞争者。 - 开发者可以期待Grails在未来为企业级应用开发带来更多的创新和便利。
- **Relationships**:支持一对一、一对多、多对多等关系映射,例如belongsTo、hasMany、hasOne等。 - **Criteria API**:用于构建灵活的数据库查询,避免硬编码SQL。 5. **Ajax集成**: - **AJAX in Grails**:...
本文将深入探讨Grails的核心源码,特别是版本2.2.2,帮助对Grails感兴趣的朋友们理解其内部工作机制,提升开发技能。 一、项目结构 在解压后的`grails-core-master`目录中,我们可以看到Grails的核心模块组织结构...
3. Convention over Configuration(CoC):Grails的核心理念之一就是“约定优于配置”,这意味着开发者在很多情况下不需要写大量的配置文件,框架会自动根据约定进行工作。 二、Grails中文文档的价值 1. 学习入口...
8. **国际化(i18n)**:Grails支持多语言环境,文档将介绍如何设置和使用国际化资源文件。 9. **插件系统**:Grails的插件系统极大地扩展了其功能,文档会讲解如何安装、使用及开发插件。 10. **测试**:文档会...