grails3 hasMany,一对多关系
参考:http://docs.grails.org/latest/ref/Domain%20Classes/hasMany.html
对象说明:
作者:Author
书:Book
Author拥有多个Book
数据库会建立3张表:
author、book、 author_book(一_ 多)
domain:
class Author {
String name
static hasMany = [books: Book]
static constraints = {
}
}
class Book {
String title
static constraints = {
}
}
数据库:
页面视图:
create.gsp页面添加:
<g:form action="save"> <fieldset class="form"> <f:all bean="author"/> <!-- 这里 ↓--> <g:select name="books" from="${com.o2o.Book.list()}" size="5" multiple="yes" optionKey="id" value="${author?.books}" /> <!-- 这里 ↑--> </fieldset> <fieldset class="buttons"> <g:submitButton name="create" class="save" value="${message(code: 'default.button.create. label', default: 'Create')}" /> </fieldset> </g:form>
============================================================================
也可以通过代码自己控制关系:
@Transactional
def saveDemo() {
def author = new Author();
author.name = "张三";
def book2 = new Book(title: "书2");
def book3 = new Book(title: "书3");
Set<Book> books=new HashSet<Book>();
books.add(book2);
books.add(book3);
//主要是下面这行代码
author.addToBooks(books);
author.errors.each{
println "it:"+it
}
author.save(flush:true);
render "ok";
return ;
}