在grails中两表关联怎么做
时间: 2024-01-21 08:19:13 浏览: 20
在Grails中实现两表关联有多种方式,以下是其中一种常用的方法:
假设我们有两个领域模型类:`Author`和`Book`,其中`Book`类需要关联`Author`类。
1. 在`Author`类中定义主键:
```
class Author {
static hasMany = [books: Book]
static mapping = {
id column: 'author_id'
}
Integer authorId
String name
}
```
2. 在`Book`类中定义外键:
```
class Book {
static belongsTo = [author: Author]
static mapping = {
author column: 'author_id'
}
Integer bookId
String title
Author author
}
```
在这里,我们使用`belongsTo`来指定`Book`类属于`Author`类,并使用`mapping`来指定外键列名。同时,我们还在`Book`类中定义了一个`author`属性,用于访问与此书相关联的作者。
3. 在数据库中创建表格:
在数据库中创建两张表格,分别为`author`和`book`表。在`book`表中需要有一个名为`author_id`的外键列,用于与`author`表建立关联。
4. 保存数据:
```
def author = new Author(name: 'John Doe')
author.save()
def book = new Book(title: 'My Book', author: author)
book.save()
```
在此示例中,我们先创建一个作者对象,然后创建一个书籍对象,并将作者对象赋给书籍对象的`author`属性。最后,我们分别保存作者和书籍对象到数据库中。
5. 查询数据:
```
def author = Author.get(1)
def books = author.books
```
在这里,我们使用`get()`方法获取id为1的作者对象,并使用`books`属性获取与此作者相关联的书籍列表。