Domanda

stiamo incontrando un comportamento strano di ibernazione con hbm2ddl.auto set per update.

Nella nostra configurazione di prova, abbiamo due utenti di database, uno contenente le tabelle per la nostra applicazione beta, l'altro è utilizzato principalmente per lo sviluppo. Cioè stessi nomi di tabella con diversi utenti. Quando vengono a creare nuove tabelle, lo facciamo utilizzando hbm2ddl.auto=update.

Ora improvvisamente lo strano comportamento è:. Gli sguardi processo di aggiornamento per le tabelle esistenti con l'utente sbagliato e crea quelli non trovato con il diritto utente

es. se le seguenti tabelle esiste

USER_A.TABLE_1
USER_B.TABLE_2

e ci aggiorna con tre tavoli configurate: TABLE_1, TABLE_2, TABLE_3 usando user_b, si finisce con

USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3

TABLE_1 non è stato creato per USER_B. Dopo aver rinominato USER_A.TABLE_1 a USER_A.TABLE_0 e l'aggiornamento di nuovo si finisce con il risultato atteso:

USER_A.TABLE_0
USER_B.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3

Questo ha senso per qualcuno? C'è qualcosa come una cache di Hibernate interna ricordando come "Hey Ho già creato questo tavolo su questo server (e non mi preoccupano l'utente)".

Ci abbiamo messo un po 'di test per rassicurare questo non è un problema di configurazione, riprodotto questo su macchine diverse, diverse configurazioni, da formica o utilizzando l'IDE, rendendo la password sicura di user_a non può essere trovato in qualsiasi parte del directory di compilazione ecc Così abbiamo sono sicuro al 100%, il comportamento è come descritto - ma siamo completamente fuori idee che cosa succede

.

sarei molto felice di sentire le vostre idee su questo, dal momento che questo problema è fastidioso da qualche tempo.

Grazie mille, Peter

È stato utile?

Soluzione

C'è qualcosa come una cache di Hibernate interna ricordando come "Hey Ho già creato questo tavolo su questo server (e non mi preoccupano l'utente)".

No. Ciò che è probabilmente accadendo è che user_a possono vedere le tabelle create in conto user_b, e viceversa. Non è chiaro quale database si sta utilizzando, ma vorrei provare a configurare Hibernate utilizzare due schemi diversi, oltre a utilizzare solo diversi utenti. Si potrebbe anche voler provare a impostare la proprietà "hibernate.default_schema", ma non sono sicuro che questo sarà solo risolvere il problema.

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