iberck
2/27/2017 - 5:44 AM

GORM Query Dinamic Finder

GORM Query Dinamic Finder

Dynamic Finders

Es la manera más simple de hacer queries en GORM. Los dinamic finders son métodos sobre un objeto de dominio que empiezan con findBy, findAllBy, and countBy.

Ejemplos:

def com = Company.findByName('ACME')
Product.findAllByManufacturer(ACME)
Product.findAllByManufacturerAndSalesPriceBetween(ACME, 200, 500)
Product.countByManufacturer(ACME)

Lo interesante de los dinamic finders es que los métodos no existen dentro del domain class, en vez de eso, GORM utiliza groovy meta object programming (MOP).

Los dinamic finders son lazy loaded por default, pero puede ser cambiado:

Product fluxCapacitor = Product.findByName('flux capacitor')
Transaction.findAllByProduct(fluxCapacitor, [fetch: [product: 'eager', store: 'eager']])

Se pueden utilizar expresiones And Or:
book = Book.findByTitleLikeOrReleaseDateLessThan("%Something%", someDate)

Se puede pasar un mapa como parámetro para indicar el sorting y order:
def books = Book.findAllByTitleLike("Harry Pot%", [max: 3, offset: 2, sort: "title", order: "desc"])

Existen múltiples comparadores:
InList, LessThan,LessThanEquals,GreaterThan,Like,Ilike,NotEqual,InRange,Between,etc