我们正在遇到奇怪的冬眠行为 hbm2ddl.auto 调成 update.

在我们的测试设置中,我们有两个数据库用户,一个用户包含用于Beta应用程序的表,另一个主要用于开发。 IE具有不同用户的表名。当要创建新表格时,我们通过使用 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_1USER_A.TABLE_0 并再次更新,我们最终得到了预期的结果:

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

这对任何人都有意义吗?是否有类似内部冬眠缓存的记忆,例如“嘿,我已经在该服务器上创建了此表(并且我不在乎用户)”。

我们已经花费了很多测试来放心,这不是配置问题,而是在不同的机器,不同的配置,ant或使用IDE上再现了,确保在构建目录中的任何地方都找不到User_a的密码。因此,我们是100%的。当然,这种行为是所描述的 - 但是我们完全没有想法。

我很高兴听到您对此的想法,因为现在这个问题已经na了一段时间了。

非常感谢,彼得

有帮助吗?

解决方案

是否有类似内部冬眠缓存的记忆,例如“嘿,我已经在该服务器上创建了此表(并且我不在乎用户)”。

否。可能发生的事情是,User_a可以看到在User_b帐户中创建的表,反之亦然。目前尚不清楚您使用的是哪个数据库,但是除了只使用不同的用户外,我还会尝试配置Hibernate来使用两个不同的模式。您可能还想尝试设置属性“ Hibernate.default_schema”,但我不确定这只会解决您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top