Grails Proyecciones de criterios en la tabla unida
alias projection (2)
Estoy asumiendo las siguientes clases de dominio:
class Car {
String name
static hasMany = [wheels : Wheel]
}
class Wheel {
String name
static belongsTo = [car : Car]
}
También asumo que este es el resultado deseado:
CarName WheelName
Car1 Wheel1
Car1 Wheel2
Car2 Wheel3
En este caso, harías esto:
void testCarProjectionItg() {
def car1 = new Car(name: ''Car1'').save()
def car2 = new Car(name: ''Car2'').save()
def wheel1 = new Wheel(name: ''Wheel1'')
def wheel2 = new Wheel(name: ''Wheel2'')
def wheel3 = new Wheel(name: ''Wheel3'')
car1.addToWheels wheel1
car1.addToWheels wheel2
car2.addToWheels wheel3
wheel1.save()
wheel2.save()
wheel3.save()
car1.save()
car2.save()
println Wheel.withCriteria {
projections {
property(''name'')
car {
property(''name'')
}
}
}
}
--Output from testCarProjectionItg--
[[Wheel1, Car1], [Wheel2, Car1], [Wheel3, Car2]]
Preferiría una consulta HQL en este caso:
println Wheel.executeQuery("select car.name, wheel.name from Car car inner join car.wheels wheel")
--Output from testCarProjectionItg--
[[Car1, Wheel1], [Car1, Wheel2], [Car2, Wheel3]]
Tengo un problema con el creador de criterios de Grails, quiero hacer una proyección en una columna que está en una tabla que está en una relación de uno a muchos con el ejemplo de la tabla padre:
Car.createCriteria() {
projections {
property(''name'')
property(''wheels.name'')// ????
}
join ''wheels''
//or wheels {} ???
}
o algo similar existe? Creo que es un problema básico con alias
¿qué hay de hacer solo?
Car.createCriteria().list() {
createAlias("wheels","wheelsAlias")
projections {
property(''name'')
property(''wheelsAlias.name'')
}
}
¿O me estoy perdiendo algo?