gpt4 book ai didi

grails - 一个Grails域类中有多个多对多关联

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

我正在使用Grails 3.0.6,并在一个复杂且高度互连的域模型中苦苦挣扎。我的类(class)与其他类(class)有多个多对多关联,而我别无选择,只能在至少一个类(class)上拥有多个belongsTo关联。我无法弄清楚代表这一点的语法。

我的领域模型(Domain Model)非常复杂,但是我可以将问题简化为以下简化示例:

class Graph {
static hasMany = [vertices: Vertex]
}

class OtherClass {
static hasMany = [vertices: Vertex]
}

class Vertex {
static hasMany = [graph: Graph, other: OtherClass]
}

在这个简化的示例中,我可以通过在Graph和OtherClass上的域类之间声明所有权来解决这个问题。在我复杂的域模型中,我没有这个选择,因为有太多的类具有多个-许多协会。

我已经试过了:
class Vertex {
static hasMany = [graphs: Graph, others: OtherClass]
static belongsTo = Graph, OtherClass
}

但是我得到了NPE。

我已经试过了:
class Vertex {
static hasMany = [graphs: Graph, others: OtherClass]
static belongsTo = [graphs: Graph, others: OtherClass]
}

但我仍然收到“GrailsDomainException:在域类[Graph]和[Vertex]之间没有定义所有者”

有什么我可以用mappedBy正确表示的吗?

在我的许多对许多协会中,实际上并不需要级联的保存(尽管它们不会造成伤害),因此,我不需要为此目的归属于(或“所有者”)。这使我想知道域类上的关联是否真的是我应该如何建模这些关系。还有什么我可以做的吗?

最佳答案

根据Burt Beckwith的评论,我创建了一个额外的域类来表示联接表。现在,将一个多对多关联分解为两个一对多关联,并且不会出现问题。

例:

class Graph {
static hasMany = [graphVertexRelations: GraphVertexRelation]
}

class OtherClass {
static hasMany = [vertices: Vertex]
}

class Vertex {
static hasMany = [graphVertexRelations: GraphVertexRelation, others: OtherClass]
static belongsTo = OtherClass
}

class GraphVertexRelation {
static belongsTo = [graph: Graph, vertex: Vertex]

static GraphVertexRelation create(Graph graph, Vertex vertex, boolean flush = false) {
new GraphVertexRelation(graph: graph, vertex: vertex).save(flush: flush, insert: true)
}
}

关于grails - 一个Grails域类中有多个多对多关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32873388/

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