Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 多对一关系如何保存_Grails_Gorm - Fatal编程技术网

Grails 多对一关系如何保存

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:

我在谷歌上搜索过,大多数例子都没有帮助,或者我做了错事。所以我不明白GORM如何在这种关系中保存,如何保存与用户相关的新事件?
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”属性吗?如果是的话,那可能就是问题所在。你的意思是,如果是的话,我没有。