所有
我的问题是我在GORM中创建一对多的关系,并期望创建两个数据库表作为后备对象。创建了3使SQL查询过于复杂。
我在GORM文档中的1对多创建了一个紧密变体:
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
}
但实际上它想要第三张桌子,
CREATE TABLE status_text {
status_text_id NUMBER(19,0),
text_idx NUMBER(19,0),
text_id NUMBER(19,0)
}
将状态添加到ErrorMessage(一个hack,因为我不希望ErrorMessage具有对Status的引用)类删除第三个表但保留第二个外键导致Text子对象具有两个外键字段。
我想要的只是简单 - 只有一组附加到父级的对象将被删除 - 任何想法我做错了什么?
由于
答案 0 :(得分:0)
我认为你不能满足这两个要求,即你有级联删除和没有连接表。您需要belongsTo
来获取级联删除,这使得关系成为双向关系。要删除连接表,请使用Map语法命名belongsTo:
class ErrorMessage {
String message
static belongsTo = [status: Status]
}