Qual è la sintassi corretta per una query ejbql che attraversa quattro livelli di relazioni molti-a-uno

StackOverflow https://stackoverflow.com/questions/1823984

  •  22-07-2019
  •  | 
  •  

Domanda

Ho un semplice modello di dati in JPA (ibernazione) composto da relazioni uno a uno e uno a uno simili a questo:

città - > stato - > governatore - > nazione - > continente

dove la città è una tantum per dichiarare, lo stato è uno a uno per governatore, il governatore è molti per uno a nazione e la nazione è molti per uno a continente.

Vorrei recuperare un'istanza di una singola città dal suo ID univoco e anche prendere avidamente il suo stato, governatore, nazione e continente correlati usando ejbql. Credo che l'ejbql corretto sia:

select t from town t
join fetch t.state s
join fetch s.governor g
join fetch g.nation n
join fetch n.continent c
where t.id=?id

Hiberante genera il sql corretto da questo ejbql, ma quando faccio myTown.getState (). getGovernor (). Ricevo un oggetto null per il mio governatore. Perché l'ibernazione non sta popolando il governatore? Sembra che non voglia popolare gli oggetti più di un livello sopra l'albero. Qualcuno vede cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Nevermind. La mia sintassi sopra funziona davvero. Il mio problema non era svuotare la sessione di ibernazione da qualche attività precedente e ottenere una versione memorizzata nella cache dell'oggetto non correttamente popolata. Dopo aver corretto quel problema, tutto va bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top