我希望我对此解释足够容易,以使人们理解。
我有一个域类:
class SearchRequirement extends Requirement {
List<SearchTagRequirement> tags;
List<SearchLegRequirement> legs;
static hasMany = [tags: SearchTagRequirement, legs: SearchLegRequirement];
static mapping = {
tags(cascade: 'all', joinTable: [name: 'associations', key: 'parent_requirement_id', column: 'requirement_id'], indexColumn: 'order_idx');
legs(cascade: 'all', joinTable: [name: 'associations', key: 'parent_requirement_id', column: 'requirement_id'], indexColumn: 'order_idx');
}
}
所有Requirement类都使用相同的requirement
表(带有类标识符列)。它使用associations
表作为创建嵌套在其他需求中的需求层次结构的方法。
此方法的问题在于,预先查询了associations
表以填充tags
和legs
中的项目数量,但是该表没有任何信息关于该行实际上是SearchTagRequirement
还是SearchLegRequirement
(该信息在requirement
表中)。
因此,如果您有SearchTagRequirement,它也认为它具有数据库中具有相同ID的SearchLegRequirement,将所有内容弄乱了。
有什么想法吗?