我正在開發一個Java Web應用程序,它使用Hibernate(基於註釋)將實體持久化到Oracle 11g數據庫。 DBA爲這些表創建了同義詞,並要求我使用這些同義詞而不是物理表。 (例如:表「Foo」具有同義詞「S_Foo」)Hibernate架構驗證在Oracle表上失敗Synonyms
如果我啓用了「hibernate.hbm2ddl.auto = validate」,那麼應用程序在啓動時會失敗並顯示「Missing Table:S_Foo」。如果我關閉驗證,那麼應用程序啓動正常,並正常工作。我的猜測是Hibernate只在驗證表存在時才檢查物理表而不是同義詞。
有什麼辦法來啓用Hibernate架構驗證同義詞嗎?我可以在註釋中指定物理表和同義詞嗎?我更喜歡在應用程序啓動時額外安全檢查表結構是否正確。
你可以發佈完整的堆棧跟蹤,還提到Hibernate,jdbc驅動程序和方言的版本。 – 2010-06-11 16:40:43
是否將同義詞創建爲PUBLIC同義詞,或由Hibernate以何種用戶身份登錄?這可能會影響結果。 (或者它可能不) – 2012-06-12 05:25:59