gpt4 book ai didi

grails - GORM 一对多关系——创建了 3 个表而不是 2 个

转载 作者:行者123 更新时间:2023-12-02 14:55:46 25 4
gpt4 key购买 nike

全部

我的问题是我在 GORM 中创建一对多关系,并期望创建 2 个数据库表作为支持对象。创建了 3 个,这使得 SQL 查询过于复杂。

我在 GORM 文档中创建了一对多的紧密变体:

class Status {

List errorMessage

static hasMany = [errorMessage:ErrorMessage]
}

和错误消息类:
class ErrorMessage {

String message

static belongsTo = Status
}

我希望这会创建两个数据库表:

CREATE TABLE status {
ID NUMBER(19,0),
VERSION NUMBER(19,0),
//other fields
}

CREATE TABLE error_message {
ID NUMBER(19,0),
VERSION NUMBER(19,0),
STATUS_ID NUMBER(19,0),
MESSAGE VARCHAR(255)
//other fields
}

但实际上它想要第三张 table ,


CREATE TABLE status_text {
status_text_id NUMBER(19,0),
text_idx NUMBER(19,0),
text_id NUMBER(19,0)
}


将 Status 添加到 ErrorMessage(一个 hack,因为我不希望 ErrorMessage 具有对 Status 的引用)类会删除第三个表,但保留第二个外键,从而导致 Text 子对象具有两个外键字段。

我想要的很简单 - 只是一组附加到父级的对象将被删除 - 任何想法我做错了什么?

谢谢

最佳答案

我认为您不能同时满足这两个要求,即您有级联删除并且没有连接表。您需要 belongsTo获得级联删除,这使得关系是双向的。要删除连接表,请使用 Map 语法命名 belongsTo:

class ErrorMessage {
String message
static belongsTo = [status: Status]
}

关于grails - GORM 一对多关系——创建了 3 个表而不是 2 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4183583/

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