2010-09-14 42 views
3

有沒有辦法告訴hibernate的hbm2ddl不能創建特定的表,但仍然有模型被Hibernate識別。告訴hibernate hbm2ddl不能創建單個表

問題是,模型映射到視圖,我想要測試內存數據庫(啓動時爲空,並在終止時刪除),因此,有2組映射是不可能的。

回答

1

好的,這並沒有完全回答這個問題(目前的版本可能沒有辦法),但它確實解決了這個問題。

因此,最後我讓休眠創建表,但後來強行刪除它,並把我自己的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進入同樣的事情。這件事沒有記錄。 我不知道爲什麼,或許它已被棄用。我認爲是這樣,因此我不會在這裏放太多細節。 它不被棄用,但我發現以前的方法不痛苦(創建視圖是幾行)。

+0

import.sql不被棄用,它只是沒有記錄。 – 2010-10-11 10:24:42

+0

@帕斯卡注意到。在通過Google和源代碼搜索更多內容後,我現在可以看到,如果我使用SchemaExport類,它應該已經非常清楚。唉,我以前從未碰過它。 – RichN 2010-10-11 13:48:47

+0

無論如何,使用來源,盧克:) +1的黑客。 – 2010-10-11 13:52:15

0

有沒有辦法告訴Hibernate的就是hbm2ddl不創建特定的表

據我所知,hbm2ddl是「全或無」,則不能排除特定的表。但是,如果要更改DDL,則可以使用它將生成的DDL輸出到文件,而不是自動將其導出到數據庫。這會有幫助嗎?

但仍然有模型被Hibernate識別。

我沒有得到那部分。你的意思是Hibernate validate數據庫對映射?

+0

我的意思是我可以使用休眠查詢該表,而不是通過單獨的系統。 – RichN 2010-09-15 02:16:27

+0

如何「使用它將生成的DDL輸出到文件」? – user697911 2016-08-12 05:33:48

0

我有類似的問題。我試圖擴展現有的模式,所以我只希望創建我的「新」表(刪除/更改/等)。我找不到任何方式告訴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

我希望這是有幫助的。

相關問題