Ich habe ein Kriterium wie folgt aufgebaut:Grails - Spalte in Abfrage mit gemeinsamem Tisch bekommen
def e = Equipment.createCriteria()
def equipmentInstanceList = e.list {
createAlias "rentals", "r", org.hibernate.sql.JoinType.LEFT_OUTER_JOIN
projections {
property('name')
property('r.status')
property('r.dateRented')
property('r.dateReturned')
}
}
ich die Idee, dass es 2-dimensionale Liste zurück. wie erwähnt here. Nach dem, was ich verstanden habe, ist die erste Liste die Liste der ausgewählten Elemente und die zweite Liste ist die Liste der Spalten der Elemente. Meine Frage ist
Wie kann ich alle ausgewählten Artikel erhalten? Beispiel:
def list = equipmentInstanceList.[all] //supposed to get all the selected items
def a = equipmentInstanceList[1] //will only get the 1st item in 1st list
Wie kann ich auf die spezifische Spalte in der zweiten Liste zugreifen? Beispiel:
def a = equipmentInstanceList[1].status //supposed to get the status column in 2nd list
EDIT:
Diese Abfrage hat das gleiche Ergebnis wie die oben genannten Kriterien.
def equipmentForRent = Equipment.executeQuery("SELECT e.name, r.status, r.dateRented, r.dateReturned FROM ers.Equipment e LEFT JOIN e.rentals r")
Ich versuche immer noch die Spalten in equipmentForRent
zu erhalten. Was ich bisher versuche.
each.equipmentForRent { e -> println e.dateReturned }
Noch diesen Fehler:
Exception evaluating property 'dateRented' for java.util.Arrays$ArrayList, Reason: groovy.lang.MissingPropertyException: No such property: dateRented for class: java.lang.String
Warum unterscheidet es sich von dieser Abfrage:
def rentalTest = Rental.executeQuery("FROM Rental")
println rentalTest.status //no error, returns the status column from rental
jedermann? in einer
der Schlüssel der Karte in Ihrer vorgeschlagenen Lösung wird als die richtige Spalte dienen, richtig? – newbie
Entschuldige meine sinnlose Frage. Ihre Hilfe wird sehr geschätzt die 'neue Karte' Methode in der Abfrage löste mein Problem – newbie
Keine Probleme Ich nehme an, dass Ihr 2. Kommentar bedeutet, dass Sie es verstehen. – Vahid