Non è possibile creare query di Grails Criteri contenente una relazione belongsTo
-
27-09-2019 - |
Domanda
Ho cercato di creare un criterio di builder contenente una relazione belongsTo e devono ancora avere successo. Si consideri il seguente modello:
class Msg {
...
static belongsTo = [user: User]
...
}
class User {
...
Organisation organisation
...
}
Sto cercando di fare la seguente query:
Msg.createCriteria().list() {
...
user {
eq("organisation", organisationInstance)
}
...
}
Tutto quello che sto ricevendo è il seguente errore
ERROR errors.GrailsExceptionResolver - No signature of method: static User.call() is applicable for argument types: (MsgService$_findMessages_closure1_closure6) values: [MsgService$_findMessages_closure1_closure6@afcba8]
Possible solutions: save(), wait(), any(), getAll(), save(java.lang.Boolean), save(java.util.Map)
Ho provato ad aggiungere diversi piccole aggiunte alla query criteri come:
join "user"
fetchMode("user", org.hibernate.FetchMode.EAGER)
Ma ancora ottenere lo stesso problema.
Ho anche cercato di aggiungere il seguente mapping statico alla classe di errore:
static mapping = {
columns {
user lazy: false
}
}
Ancora non funziona.
C'è un modo per utilizzare criteri builder contenente una query belongsTo a tutti?
Grazie per il vostro aiuto in anticipo.
Lucien
Soluzione
ho trovato la soluzione! Il problema non era legato a criteri costruttore a tutti. In questo caso, avevo una variabile utente all'interno della portata. Una volta che un rimosso esso funziona come un fascino: -)
Altri suggerimenti
def criteria = Msg.createCriteria()
results = criteria.list{
user{
eq("organisation", organisationInstance)
}
}