gpt4 book ai didi

grails - Grails:简单的hasMany关系创建了不必要的表

转载 作者:行者123 更新时间:2023-12-02 15:19:43 27 4
gpt4 key购买 nike

嗨,我有一个简单的问题。
我的域类是这样的:

class Example {

long seq

hasMany = [example_array: ExampleData]

long count
}

class ExampleData {

String type

long description

static belongsTo = Example

static constraints = {
}
}

这将产生3个表,就像多对多关系。
为什么是这样?

谢谢

最佳答案

使用额外表的原因是,您仅在一个方向上对关系进行了建模-Example可以通过由于ExampleData属性而添加到您的类字节码中的example_array Set来访问其hasMany实例,但是ExampleData实例无法引用其拥有的Example

您添加了belongsTo属性,但仅指定了类名。这足以配置所有权,级联删除等,但不提供类中的属性来访问Example实例。

如果将其更改为其他受支持的语法,它将按预期工作:

static belongsTo = [example: Example]

此处 example最终将是 Example属性的名称(您可以将其和/或 example_array更改为任何有效的属性名称),这与声明基本相同
Example example

现在双方都可以访问对方,这种关系是双向的,您不再需要第三个表。这是因为通常在子表中使用外键来实现1-many,在这种情况下,该表中的 ExampleData表指向 Example表。没有类中的属性来连接该列是不可能的,因此联接表是必需的。

关于grails - Grails:简单的hasMany关系创建了不必要的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39617797/

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