有沒有辦法告訴hibernate的hbm2ddl不能創建特定的表,但仍然有模型被Hibernate識別。告訴hibernate hbm2ddl不能創建單個表
問題是,模型映射到視圖,我想要測試內存數據庫(啓動時爲空,並在終止時刪除),因此,有2組映射是不可能的。
有沒有辦法告訴hibernate的hbm2ddl不能創建特定的表,但仍然有模型被Hibernate識別。告訴hibernate hbm2ddl不能創建單個表
問題是,模型映射到視圖,我想要測試內存數據庫(啓動時爲空,並在終止時刪除),因此,有2組映射是不可能的。
好的,這並沒有完全回答這個問題(目前的版本可能沒有辦法),但它確實解決了這個問題。
因此,最後我讓休眠創建表,但後來強行刪除它,並把我自己的create view
聲明。看來有兩種方法可以做到這一點。
第一種方式是使用<database-object>
元素,特別是子元素稱爲<create>
,像這樣:
<class table="MY_VIEW"></class>
<database-object>
<create>
drop table MY_VIEW;
create view MY_VIEW etc etc;
</create>
</database-object>
另一種方式是通過在import.sql進入同樣的事情。這件事沒有記錄。
我不知道爲什麼,或許它已被棄用。我認爲是這樣,因此我不會在這裏放太多細節。
它不被棄用,但我發現以前的方法不痛苦(創建視圖是幾行)。
有沒有辦法告訴Hibernate的就是hbm2ddl不創建特定的表
據我所知,hbm2ddl
是「全或無」,則不能排除特定的表。但是,如果要更改DDL,則可以使用它將生成的DDL輸出到文件,而不是自動將其導出到數據庫。這會有幫助嗎?
但仍然有模型被Hibernate識別。
我沒有得到那部分。你的意思是Hibernate validate
數據庫對映射?
我的意思是我可以使用休眠查詢該表,而不是通過單獨的系統。 – RichN 2010-09-15 02:16:27
如何「使用它將生成的DDL輸出到文件」? – user697911 2016-08-12 05:33:48
我有類似的問題。我試圖擴展現有的模式,所以我只希望創建我的「新」表(刪除/更改/等)。我找不到任何方式告訴hbm2ddl工具在模型中使用這些實體進行驗證,但不能爲它們生成SQL。
所以我寫了一個簡單的Perl腳本來從生成的SQL中刪除這些語句。它的設計在shell腳本管道的工作,像這樣:
cat your-sql-file.sql | scrub-schema.pl table1 table2 table3 ... > scrubbed.sql
的代碼可以在這裏(使用Apache v2協議):
https://github.com/cobbzilla/sql-tools/blob/master/scrub-schema.pl
我希望這是有幫助的。
import.sql不被棄用,它只是沒有記錄。 – 2010-10-11 10:24:42
@帕斯卡注意到。在通過Google和源代碼搜索更多內容後,我現在可以看到,如果我使用SchemaExport類,它應該已經非常清楚。唉,我以前從未碰過它。 – RichN 2010-10-11 13:48:47
無論如何,使用來源,盧克:) +1的黑客。 – 2010-10-11 13:52:15