在一对多关系中使用相同联接表的多个字段问题

时间:2019-06-19 21:38:16

标签: hibernate grails gorm relationship

我希望我对此解释足够容易,以使人们理解。

我有一个域类:

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表以填充tagslegs中的项目数量,但是该表没有任何信息关于该行实际上是SearchTagRequirement还是SearchLegRequirement(该信息在requirement表中)。

因此,如果您有SearchTagRequirement,它也认为它具有数据库中具有相同ID的SearchLegRequirement,将所有内容弄乱了。

有什么想法吗?

0 个答案:

没有答案