2013-10-04 8 views
5

Ho un dominio come segue:Grails/Hibernate: No fila con l'identificatore specificato esiste

class Author { 
    String id 
    static hasMany = [accounts: Account] 
    static belongsTo = Account 
    static mapping = { 
     accounts joinTable: [name: "SOMETABLE", key: 'SOMEFIELD'], 
       ignoreNotFound: true 
    } 
    static constraints = {} 
} 

ottengo il seguente errore quando si trovano alcuna traccia. Ho provato IgnoreNotFound, non funziona.

error message: accounts=org.hibernate.ObjectNotFoundException: 
No row with the given identifier exists: 
[com.myapplication.Account#123465489785] 

si verifica quando si tenta di selezionare unire 2 record che non si ha accesso da inserire nel db. Esiste una soluzione alternativa, per favore?

risposta

2

significa che non ci sono righe nella tabella Account con ID 123465489785. Il tuo autore ha un account con ID 123465489785. Hibernate non riesce a trovarlo, quindi genera un'eccezione. se è un nuovo account, rendere l'id sull'account null in modo che Hibernate ne conosca una nuova.

+0

Capisco che ciò significa che non esiste alcuna riga nella tabella Autore. Ma c'è un modo per chiedere ai graal di ignorarlo? Possiamo dire ai graal di restituire solo una lista vuota? – user2679352

+1

cosa stai cercando di fare? salvare un autore? –

+0

Questo è un database precedente. Sto solo leggendo il disco. Non aggiorneremo alcun record. C'è una relazione molti-a-molti, questo è il motivo per cui ho specificato il joinTable. – user2679352

2

L'aggiunta della mappatura ignoreNotFound = true risolve il problema in base allo Grails documentation.

Problemi correlati