如何创建自定义 Grails 查询
How to create a custom Grails query
我是 Grails 的新手,在查询方面遇到了一些问题。我有两个像这样的域 类:
class Cliente {
String nombre
String cuit
String localidad
String establecimiento
static hasMany = [facturas: Factura]
}
class Factura {
String Proveedor
int sucursal
String numero
String letraFactura
Cliente cliente
Date fecha
String tipo
}
我想列出 facturas
中客户名称为:
的所有元素
预期结果:
Proveedor|sucursal|numero|cliente_nombre|fecha
我尝试了一些不同的方法,但总是得到 cliente_id
而不是 cliente_nombre
。
我认为我知道你在问什么:给定一个客户名称,return一个factura
的列表,并规定字段列表应包含客户端名称而不是客户端 ID。
import org.hibernate.criterion.CriteriaSpecification
// given a client name
def clientNameToSearch = 'some name'
def crit = Factura.createCriteria()
def results = crit.list() {
createAlias('cliente', 'cli')
eq('cli.nombre', clientNameToSearch)
// optional transformer to output a map rather than a list
resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP)
projections {
property('Proveedor', 'Proveedor')
property('sucursal', 'sucursal')
property('numero', 'numero')
property('cli.nombre', 'clienteNombre')
property('fecha', 'fecha')
}
}
results
将包含地图列表,每个地图都具有以下结构:
[
Proveedor: ...,
sucursal: ...,
numero: ...,
clienteNombre: ...,
fecha: ...
]
我是 Grails 的新手,在查询方面遇到了一些问题。我有两个像这样的域 类:
class Cliente {
String nombre
String cuit
String localidad
String establecimiento
static hasMany = [facturas: Factura]
}
class Factura {
String Proveedor
int sucursal
String numero
String letraFactura
Cliente cliente
Date fecha
String tipo
}
我想列出 facturas
中客户名称为:
预期结果:
Proveedor|sucursal|numero|cliente_nombre|fecha
我尝试了一些不同的方法,但总是得到 cliente_id
而不是 cliente_nombre
。
我认为我知道你在问什么:给定一个客户名称,return一个factura
的列表,并规定字段列表应包含客户端名称而不是客户端 ID。
import org.hibernate.criterion.CriteriaSpecification
// given a client name
def clientNameToSearch = 'some name'
def crit = Factura.createCriteria()
def results = crit.list() {
createAlias('cliente', 'cli')
eq('cli.nombre', clientNameToSearch)
// optional transformer to output a map rather than a list
resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP)
projections {
property('Proveedor', 'Proveedor')
property('sucursal', 'sucursal')
property('numero', 'numero')
property('cli.nombre', 'clienteNombre')
property('fecha', 'fecha')
}
}
results
将包含地图列表,每个地图都具有以下结构:
[
Proveedor: ...,
sucursal: ...,
numero: ...,
clienteNombre: ...,
fecha: ...
]