Grails находит родительский элемент по дочернему элементу

#grails

#grails

Вопрос:

Я просматриваю Интернет и пока не нашел ответа на свой вопрос. Должно быть довольно просто:

 class Parent {
  String name
  Child child
}
 

Когда у меня есть дочерний объект, как я могу получить родительский элемент по нему?
Нравится:

def Parent = Parent.findByChild(дочерний элемент)

Как я могу получить родительский объект по его дочернему элементу?

Спасибо

Ответ №1:

Где вы смотрели?

Являются ли эти классы домена? Если это так, то вы можете подключить их через has_many и belongs_to:

 class Parent {
    String name
    List children
    static has_many = [ children: Child ]
}

class Child {
   static belongs_to = [ parent: Parent ]
}
 

Тогда вы можете просто написать child.parent

Комментарии:

1. У меня есть только дочерний элемент, и я хочу знать, чей его родитель. Итак, что-то вроде def Parent = Parent.findByChild(дочерний элемент). и у родительского элемента есть только один дочерний элемент, и да, оба его класса домена. Мне действительно нужен метод «выбора», чтобы получить родительский элемент, отправив ему дочерний элемент

2. Забудьте об этом, я неправильно ввел findBy. Так что код, который я только что вставил, работает дочерний элемент child = …. def parent = findByChild(дочерний элемент) Спасибо за ваше внимание, Кевин

3. Чаще всего их пишут как hasMany и belongsTo

Ответ №2:

def parent = Parent.findByChild(child) работает нормально — вы можете использовать динамические средства поиска для скалярных полей (строк, чисел, логических значений и т. Д.) И других объектов.

Выполнение обратного и поиск всех Child экземпляров для данного Parent немного сложнее, но может быть выполнено с помощью HQL:

 def p = Parent.get(id)
def children = Parent.executeQuery(
       'select c from Child c, Parent p where p.child=c and p=:parent',
       [parent: p])