我们在hbm2ddl.auto
设置为时遇到了奇怪的休眠行为update
。
在我们的测试设置中,我们有两个数据库用户,一个包含我们的 beta 应用程序的表,另一个主要用于开发。即具有不同用户的相同表名。当要创建新表时,我们使用hbm2ddl.auto=update
.
现在突然奇怪的行为是:更新过程用错误的用户查找现有的表,并用正确的用户创建那些没有找到的表。
例如,如果存在以下表格
USER_A.TABLE_1
USER_B.TABLE_2
我们更新配置了三个表:TABLE_1, TABLE_2, TABLE_3
使用 USER_B,我们最终得到
USER_A.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
TABLE_1
不是为USER_B
. USER_A.TABLE_1
重命名USER_A.TABLE_0
并再次更新后,我们最终得到了预期的结果:
USER_A.TABLE_0
USER_B.TABLE_1
USER_B.TABLE_2
USER_B.TABLE_3
这对任何人都有意义吗?是否有类似内部休眠缓存的内容,例如“嘿,我已经在此服务器上创建了此表(并且我不关心用户)”。
我们进行了相当多的测试以确保这不是配置问题,在不同的机器上、不同的配置、从 ant 或使用 IDE 重现此问题,确保在构建目录的任何地方都找不到 USER_A 的密码等。所以我们是 100%当然,行为如所描述 - 但我们完全不知道会发生什么。
我很高兴听到您对此的想法,因为这个问题已经困扰了一段时间。
非常感谢,彼得