grails gorm - 不常见的一对多关联 - 找到错误?

时间:2011-08-31 13:05:10

标签: grails gorm

首先:我不是grails的初学者。我多次使用一对多关联。也许问题正在发生,因为它不是常用的。

代码:

class Filter {

      static hasMany = [normal:Result, longerDates:Result, locationReduce1:Result, locationReduce2:Result]
}

class Result {

    int score

    static belongsTo = [user:User, filter:Filter]

    static constraints = {
        user(nullable:false, blank:false)
        score(nullable:false)
}
你可以看到

我使用类“结果”4次作为一对多关联到同一类“过滤器”

grails使用外键“filter_id”创建表“result”以引用关联的过滤器。但如果它的“正常”/“更长的日期”......关联没有区别。结果当我查询

  

def results = filter.normal

  

def results = filter.longerDates

我得到了相同的结果。虽然我保存了正确的结果

  

filter.addToNormal(new Result(..))

  

filter.addToLongerDates(new Result(..))

我尝试的下一件事是从结果中删除belongs_to关联到过滤器。虽然我想在删除过滤器时隐式删除​​过滤器的所有结果...

结果是我想要的“结果”表。 4个属性称为“normal”“longer_dates”,“location_Reduce_1”和“location_Reduce_2”。当我保存“正常”结果时,表中的属性包含结果所属的过滤器ID。其他属性(如longerDates“具有空值)。 到现在为止还挺好。奇怪的是,我只能在每个过滤器中保存一个结果,尽管我在“过滤器”类中有一个has_many属性

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:3)

我认为你应该在Filter类

中使用mappedBy属性
class Filter {

    static hasMany = [normal:Result, longerDates:Result, locationReduce1:Result, locationReduce2:Result]
    static mappedyBy = [normal: "normalFilter", longerDates: "longerDatesFilter", locationReduce1: "locationReduce1Filter", locationReduce2: "locationReduce2Filter"]
}

class Result {
    static belongsTo = [normalFilter: Filter, longerDatesFilter: Filter, locationReduce1: Filter, locationReduce2Filter: Filter]
}

引用为here