Используйте критерии создания для нескольких ассоциаций

Какое наиболее эффективное решение для получения status значение атрибута из экземпляра ClassD, имея его name Значение атрибута и начиная с экземпляра ClassA?

Я могу использовать цикл в каждом списке, но я думаю, что есть лучшее решение с использованием критериев создания

Class ClassA {
    static hasMany = [CLassBList:ClassB]
}


Class ClassB {
   static hasMany = [CLassCList:ClassC]
   static belongsTo = [ClassA]
}


Class ClassC {
    static hasMany = [CLassDList:ClassD]
    static belongsTo = [ClassB]
 }


Class ClassD {
    String name
    String status
    static belongsTo = [ClassC]
}

1 ответ

Я предполагаю (хотя ваш код не упоминает об этом), что у вас есть некоторые критерии для ClassA, по которым вы хотите искать, тогда вы можете использовать createCriteria, например:

def c = ClassD.createCriteria()
def results = c.list () {
  projections { property('status') }
  classC {
    classB {
      classA {
        eq('classAProperty', someClassAValue)
      }
    }
  }
}

Используйте.get () вместо.list (), если вы ожидаете только 1 результат, тогда вам также может потребоваться предложение order ().

Удалите проекции, если хотите, чтобы весь ClassD был возвращен, а затем работайте так, как считаете нужным.

Другие вопросы по тегам