gpt4 book ai didi

database - grails:如何实现 "zero-to-one"关系

转载 作者:行者123 更新时间:2023-12-02 15:30:03 26 4
gpt4 key购买 nike

我需要实现“零对一”的关系。特别是,我有两个类:Event 和 Patient;我希望,当我创建一个事件时,可以选择或不选择患者。
我发现了以下内容:
在 Event 类中,添加一个字段 Patient,具有可为空的约束,但我认为,当我删除 Patient 实例时,相关事件不会在级联中自动删除...
有没有办法自动完成?还是我需要手动执行?

编辑:
根据您的建议,我创建了一种删除患者事件的方法,如下所示:

 def beforeDelete() {
new EventController().deleteEventsOfPatient(this)
}

def deleteEventsOfPatient(Patient patient)
{
def eventsOfPatient = Event.findAllByPatient(patient)
for(int i = 0; i < eventsOfPatient.size(); i++)
{
if (!eventsOfPatient[i].delete(flush: true)) {
flash.message = "error in delete event of patient";
}

}

}

但它引发了以下异常:

只读模式下不允许写入操作 (FlushMode.MANUAL):将 Session 转换为 FlushMode.COMMIT/AUTO 或从事务定义中删除“readOnly”标记。

最佳答案

看看Grails文档段落标题为 'Events and Auto Timestamping'

您有一个 beforeDelete可用于彻底删除您的 Patient 的事件如果存在,类似于以下内容:

class Patient{

def beforeDelete() {
deleteEventsOfPatient()
}

def deleteEventsOfPatient(){
def eventsOfPatient = Event.findAllByPatient(this)
for(int i = 0; i < eventsOfPatient.size(); i++){
eventsOfPatient[i].delete()
}
}
}

关于database - grails:如何实现 "zero-to-one"关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20856106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com