Próbuję załadować różnych rodziców za pomocą kryteriów w Grails. Zapytanie jest następującyJak uzyskać różne wyniki za pomocą prognoz i kryteriów
Query:
def criteria = Parent.createCriteria();
results = criteria.list(max:params.max, offset:params.offset){
projections{ groupProperty('id') }
children{
books{
like('title',"%book")
}
}
order("id","asc")
}
Klasy Domena
class Parent {
String name
static hasMany = [children:Child]
static constraints = {
}
}
class Child {
String name
Parent parent
static belongsTo = [parent:Parent]
static hasMany = [books:Book]
static constraints = {
}
}
class Book {
String title
Child child
static belongsTo = [child:Child]
static constraints = {
}
}
pytanie: Nie jestem w stanie uzyskać odrębne wiersze rodzica.
Inne przyjęte Podejścia i ich wyniki: I dawca wiem dlaczego groupProperty nie działa. Próbowałem odrębny w prognozach zamiast groupProperty i nie jest owocny też !. jeśli używam kryteria.listDistinct zamiast kryteria.list, wtedy jestem w stanie uzyskać odrębne Parent Parents, ale wcześniejsze podejście wymaga uzyskania totalCount z dodatkowego zapytania dla stronicowania. Dlatego jestem bardzo zainteresowani w uzyskaniu wyraźnych wierszy Parent użyciu criteria.list
góry dziękuję
Jaki jest twój cel końcowy? Czy próbujesz uzyskać listę rodziców, którzy mają dzieci, które mają książki, które pasują do konkretnego tytułu? – Pat
w rzeczywistości chcę załadować wszystkich rodziców, unikatowych, mają dzieci z książkami o tytule "% M%", a tam problemem jest groupproperty. Wyniki nie zawierają odrębnych rodziców. Jeśli trudno jest zrozumieć zapytanie, zastąp powyższą wartość zapytania następującymi "dziećmi { dzieci { jak (" name "," pau% ") } } kolejność (" id "," asc ") – Rehman
relacje: Rodzic: Dziecko [1: N] i Dziecko: Książka [1: N] – Rehman