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

È stato utile?

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)
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top