我真正的课程是不同的,所以请耐心等待我对这个例子的有限认识。 假设我有两个类:树和工具。树有许多授权工具。但是其中一个工具是一个连接两棵树的绳子,所以Rope扩展了Tool并且有一个属性endTree来存储另一棵树:
class Tree {
static hasMany = [tools: Tool]
}
class Tool {
// it doesn't matter here what the tool can do
}
class Rope extends Tool {
Tree endTree
}
我遇到的问题是Grails认为这种关系是双向的,所以在评估实体时,AbstractGrailsDomainBinder中的isBidirectionalManyToOneWithListMapping()返回true,实际上将endTree属性设置为updateable = false,hibernate在保存期间跳过endTree更新
我做错了什么?
谢谢,
MB
答案 0 :(得分:2)
您可以明确告诉Grails 不使用mappedBy
值为“none”将属性视为双向关系的一方:
class Tree {
static hasMany = [tools: Tool]
static mappedBy = [tools: "none"]
}
和/或Rope
端的相同内容:
class Rope extends Tool {
Tree endTree
static mappedBy = [endTree: "none"]
}
我不确定你是否需要两端的mappedBy
或者其中一个是否足够。