2010-06-11 6 views
7

Sto sviluppando un'applicazione Web Java che utilizza Hibernate (basato su annotazioni) per le entità persistenti in un database Oracle 11g. Il DBA ha creato sinonimi per le tabelle e mi ha chiesto di utilizzare questi sinonimi al posto delle tabelle fisiche. (Esempio: Tabella "Foo" ha il sinonimo "S_Foo")Hibernate Schema Validation Fails su Oracle Table Sinonimi

Se ho "hibernate.hbm2ddl.auto = validate" abilitato, l'applicazione non riesce all'avvio con "Missing Table: S_Foo". Se spengo la convalida, l'app si avvia correttamente e funziona correttamente. La mia ipotesi è che Hibernate controlli solo contro tabelle fisiche e non sinonimi quando convalida che esiste una tabella.

C'è un modo per abilitare la convalida dello schema di Hibernate con i sinonimi? Posso specificare sia una tabella fisica che un sinonimo nell'annotazione? Preferisco avere quella verifica di sicurezza extra che la struttura della tabella sia corretta all'avvio dell'applicazione.

+0

Puoi pubblicare la traccia dello stack completo e menzionare anche le versioni di Hibernate, del driver jdbc e del dialetto. –

+0

I sinonimi creati come sinonimi PUBLIC o sinonimi di proprietà dell'utente che Hibernate effettua l'accesso come? Questo potrebbe influenzare il risultato. (o potrebbe non) –

risposta

0

Non ho familiarità con l'ibernazione, ma potresti provare le visualizzazioni anziché i sinonimi. Se stai usando queste tabelle per le viste, funzionerebbe allo stesso modo di un sinonimo. Se vuoi essere in grado di fare CRUD sulla "tabella" anche se avresti bisogno di creare un gruppo di trigger invece di.

1

Modifica hibernate.hbm2ddl.auto=validate a hibernate.hbm2ddl.auto valore = "" quindi non fallirà.