2011-08-29 7 views
7

Devo domini GORM, A & B, che si riferiscono alle tabelle del database. A ha una relazione uno-a-molti con B. A causa di ciò, le classi sembrano simili a:Ottenere l'ID di un oggetto caricato uno-a-molti senza un altro viaggio nel DB con GORM

class A { 
    B b 
    Long id 
} 

class B { 
    Long id 
} 

Quando ho recuperare un'istanza di A l'ID del corrispondente istanza di B viene recuperato dal database. Tuttavia, quando provo ad accedere a tale ID tramite qualcosa come:

A a = A.get(11) 
Long bid = a.b.id 

l'intero oggetto viene caricato dal database. In alcuni casi, desidero solo l'ID di B (che è già stato recuperato) e non voglio caricare l'intera istanza dal database. C'è un modo per ottenere l'ID da B senza tornare indietro e recuperare l'intero oggetto.

NOTA: So che sta effettuando un ulteriore recupero sulla linea con a.b.id perché posso vedere l'SQL generato da quando ho attivato l'opzione loggingSql nel mio file DataSource.

+2

non collegati - non è necessario per dichiarare 'Long id' nelle tue classi di dominio - Grails inietta quel campo per te, insieme al campo' version'. –

risposta

8

Invece di:

offerta lungo = Abid

uso:

offerta lungo = a.bId

Problemi correlati