gpt4 book ai didi

java - Grails:防止外键内容被更新

转载 作者:行者123 更新时间:2023-12-02 11:23:50 25 4
gpt4 key购买 nike

我有如下所示的域类

class College implements Serializable
{
String name
String description
}

class Student implements Serializable
{
String name
College college
}

我在 StudentController 中有 UpdateStudent 操作,它接受 Student 对象并更新 MySQL 数据库中的数据,我面临的问题是外键“College”也随着“Student”一起更新,这是不可取的,我只想更新 Student 对象,忽略外键。

作为我正在使用的解决方法

student.college.refresh()

在该操作中,它从数据库中获取 College 对象并忽略 Student 中的 College 对象,但由于代码库很大,很难在任何地方对 College 对象调用刷新()。我该如何解决这个问题?

我正在使用 Grails 3。

示例学生对象

{
"id":1,
"name":"Arjun",
"college":{
"id":1,
"name":"XYZ College",
"description": "Test description"
}
}

这里当我更新 Student 对象时,不应该更新 College 对象的内容。

最佳答案

我不清楚你的问题,但你可以尝试以下操作:

在保存您的Student对象时添加deepValidate:false

student.save(deepValidate:false)

或者尝试以下操作

您可以向 Student 域类添加约束:

static constraints = {
college blank: true, nullable: true
}

默认情况下,所有域类属性都不可为 null(即它们具有隐式 nullable: false 约束)。

希望这对你有帮助

关于java - Grails:防止外键内容被更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737755/

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