12

我正在开发一个 Java Web 应用程序,它使用 Hibernate(基于注释)将实体持久保存到 Oracle 11g 数据库。DBA 为表创建了同义词,并要求我使用这些同义词而不是物理表。(例如:表“Foo”有同义词“S_Foo”)

如果我启用了“hibernate.hbm2ddl.auto=validate”,则应用程序在启动时会失败,并显示“Missing Table: S_Foo”。如果我关闭验证,则应用程序可以正常启动并正常运行。我的猜测是 Hibernate 在验证表是否存在时只检查物理表而不是同义词。

有什么方法可以使用同义词启用 Hibernate 模式验证?我可以在注释中同时指定物理表和同义词吗?我更喜欢在应用程序启动时进行额外的安全检查以确保表结构正确。

4

2 回答 2

-1

我不熟悉hibernate,但你可以尝试视图而不是同义词。如果您只是将这些表用于视图,它的工作原理与同义词相同。如果您希望能够在“表”上执行 CRUD,尽管您需要构建一堆而不是触发器。

于 2010-06-14T00:59:50.673 回答
-1

更改hibernate.hbm2ddl.auto=validatehibernate.hbm2ddl.autovalue = "" 则不会失败。

于 2010-12-28T18:29:00.157 回答