Frage

Wir stoßen mit einem seltsamen Hibernate -Verhalten mit hbm2ddl.auto einstellen update.

In unserem Test -Setup haben wir zwei Datenbankbenutzer, die die Tabellen für unsere Beta -Anwendung enthalten, die andere wird hauptsächlich für die Entwicklung verwendet. Dh die gleichen Tabellennamen mit verschiedenen Benutzern. Wenn neue Tabellen erstellt werden sollen, tun wir dies mit der Verwendung hbm2ddl.auto=update.

Jetzt ist plötzlich das seltsame Verhalten: Der Update -Prozess sucht nach vorhandenen Tabellen mit dem falschen Benutzer und erstellt diejenigen, die nicht mit dem richtigen Benutzer gefunden wurden.

ZB, wenn die folgenden Tabellen vorhanden sind

USER_A.TABLE_1
USER_B.TABLE_2

und wir aktualisieren mit drei konfigurierten Tabellen: TABLE_1, TABLE_2, TABLE_3 Mit user_b haben wir am Ende mit

USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3

TABLE_1 ist nicht erstellt für USER_B. Nach dem Umbenennen USER_A.TABLE_1 zu USER_A.TABLE_0 und erneut aktualisieren wir am Ende des erwarteten Ergebniss:

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

Macht das für irgendjemanden Sinn? Gibt es so etwas wie einen internen Hibernate -Cache, der sich wie "Hey, ich habe diese Tabelle bereits auf diesem Server erstellt (und ich kümmere mich nicht um den Benutzer).

Wir haben einige Tests aufgewendet, um zu versichern, dass dies kein Konfigurationsproblem ist, dies auf verschiedenen Maschinen, unterschiedlichen Konfigurationen, von ANT oder der Verwendung der IDE, reproduziert und sicherzustellen Sicher, das Verhalten ist wie beschrieben - aber wir haben völlig aus den Ideen heraus, was passiert.

Ich würde mich sehr freuen, Ihre Ideen dazu zu hören, da dieses Problem seit einiger Zeit nervt.

Vielen Dank, Peter

War es hilfreich?

Lösung

Gibt es so etwas wie einen internen Hibernate -Cache, der sich wie "Hey, ich habe diese Tabelle bereits auf diesem Server erstellt (und ich kümmere mich nicht um den Benutzer).

Nein. Was wahrscheinlich passiert, ist, dass User_a die Tabellen sehen kann, die unter user_b-Konto erstellt wurden, und umgekehrt. Es ist nicht klar, welche Datenbank Sie verwenden, aber ich würde versuchen, Hibernate so zu konfigurieren, dass sie zwei verschiedene Schemas verwenden, zusätzlich nur verschiedene Benutzer. Möglicherweise möchten Sie auch versuchen, die Eigenschaft "hibernate.default_schema" festzulegen, aber ich bin mir nicht sicher, ob dies nur Ihr Problem lösen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top