Grails 多对一关系如何保存
我在谷歌上搜索过,大多数例子都没有帮助,或者我做了错事。所以我不明白GORM如何在这种关系中保存,如何保存与用户相关的新事件?Grails 多对一关系如何保存,grails,gorm,Grails,Gorm,我在谷歌上搜索过,大多数例子都没有帮助,或者我做了错事。所以我不明白GORM如何在这种关系中保存,如何保存与用户相关的新事件?addToEvent不起作用 class User{ Long id String name Long codeUser StatusType statusType static hasMany = [event: Event] static constraints = { statusType(nullable: true) name(nullable:
addToEvent
不起作用
class User{
Long id
String name
Long codeUser
StatusType statusType
static hasMany = [event: Event]
static constraints = {
statusType(nullable: true)
name(nullable: true)
}
class Event{
Long id
String name
String startDate
String description
static belongsTo = [user:User]
static constraints = {
name(nullable: true)
startDate(nullable: true)
description(nullable: true)
}
def createEvent(){
def data = JSON.parse(params.data)
def user = User.findByCodeUser(data.codeUser)
def event = new Event(name: data.name, startDate: data.start_time, description: data.description)
//removed the user: user
user.addToEvent(event)
user.save(flush: true)
}
错误如下:消息:没有方法的签名:java.util.ArrayList.addToEvent()适用于参数类型:(project.web.Event)值:[project.web.Event:(未保存)]
如中所述,您需要使用addTo*方法通过GORM正确保存关系
class User{
...//attributes
Long codeUser
static hasMany = [event: Event]
}
class Event{
...//attributes
Long codeEvent
static belongsTo = [user:User]
}
def user = User.findByCodeUser(params.codeUser)
def event = new Event(codeEvent: params.codeEvent)
user.addToEvent(event)
user.save(flush: true)
请注意,您不必设置事件
的用户
属性,保存用户
也将保存事件
最后,作为风格指南,您通常希望以复数形式命名您的收藏
static hasMany = [events: Event]
我试图使用
addTo
方法,但它给出了错误:没有方法的签名:java.util.ArrayList.addToEvent()
并且无法解析符号addToEvent
。然后你的User.findByCodeUser出现了一些奇怪的情况,因为它应该返回该域类的第一个匹配实例。您使用的是什么版本的Grails?它返回packagename.domain 1、Grails 2.3.6除了hasMany之外,您没有在域类中定义“event”属性吗?如果是的话,那可能就是问题所在。你的意思是,如果是的话,我没有。