2011-07-21 37 views
2

我使用Hibernate(JPA2)hibernate.hbm2ddl.auto=update進行測試,使用hibernate.hbm2ddl.auto=validate進行生產。增強Hibernate數據庫模式?

我想要做的是擴展生成的模式與一個額外的表(未映射到實體),以便爲測試生成此表並驗證生產。

這是可能的,以及如何?

回答

3

是的,可以使用「auxiliary database objects」。我就該主題寫了一篇blog post,因爲文檔並不是最大的。

編輯:休眠的另外一個未公開的特性,我沒有在博客提到:如果包括在classpath的根目錄名爲「import.sql」當你運行一個Hibernate架構導出文件,它也將執行該文件中的語句。

+0

+1這聽起來不錯:但如何在JPA2環境中執行此操作(我只有persistence.xml和orm.xml) – Ralph

+0

@Ralph:恐怕我無法回答。我從來沒有理由使用JPA。我在關於import.sql的回答中添加了一條註釋,可以幫助你。 –

+0

我接受答案,因爲它會爲純粹的hibernate工作,即使我沒有得到它運行jpa – Ralph

0

編寫一個SQL腳本來創建表。在釋放環境鏈時,首先運行SQL以在Prod中創建表。那麼validate會沒事的。

+0

這就是我現在要做的,但是這並沒有回答問題:問題是:如何驗證和自動更新。 - 如果我理解你的答案,那麼驗證不會被增強,所以如果表格丟失,驗證不會失敗。它也不會增強自動更新過程。 – Ralph

+0

所以你想在Test中更新',然後在Prod中驗證''。如果表格丟失,是的,「驗證」會拋出錯誤,並且您的應用程序無法正確啓動。那是你要的嗎? – atrain

+0

是的 - 這是更新和驗證的默認行爲 - 我想將它擴展到非jpa管理對象的表。 – Ralph