#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])