我想爲特定實體類生成創建表腳本。爲與一個JPA實體類相關的所有表生成創建腳本
我可以使用休眠(hbm2dll工具)(Auto generate data schema from JPA annotated entity classes)爲我的所有類自動生成完整的腳本,但我不知道如何過濾,因此只有與一個實體類相關的部分仍然存在。
問候, Laures
我想爲特定實體類生成創建表腳本。爲與一個JPA實體類相關的所有表生成創建腳本
我可以使用休眠(hbm2dll工具)(Auto generate data schema from JPA annotated entity classes)爲我的所有類自動生成完整的腳本,但我不知道如何過濾,因此只有與一個實體類相關的部分仍然存在。
問候, Laures
我在自己的代碼中處理了腳本生成。基本查詢是通過調用hbm2ddl工具生成的,我的代碼爲它們添加了一些細節(如添加如果不存在創建查詢;添加某些創建索引查詢; ...)
是否有你的實體之間沒有聲明的關聯? Hibernate會根據你的域模型的知識生成外鍵和映射表等。
如果您只想爲單個隔離表創建DDL,您可以僅使用該實體來配置會話工廠,並將其指向空數據庫。然後,您可以從日誌中記錄DDL(如上所述,由Hibernate生成),然後在獲得所需內容時刪除該數據庫。
但是,如果有任何關聯,然後休眠將無法做到這一點。
我想如果你配置你的persistence.xml文件與這個單一的實體,排除所有其他未列出的實體,然後啓動實體管理器工廠啓用DDL自動生成,你可能會得到這一點。
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
<persistence-unit name="stackoverflow" transaction-type="RESOURCE_LOCAL">
<class>com.stackoverflow.model.SingleEntity</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
</persistence>
不幸的是,實體並不孤立(那很簡單)。但是引用的類(或更正確的表)已經存在。如果create table語句使用「如果不存在」,但不幸的是它們不會。 – Laures 2011-05-26 15:53:25
這是一張新桌嗎?如果使用update而不是create,它將創建包含所有外鍵和引用的新表。 。如果這是唯一的域更改,那麼hibernate將只創建新表,並保留現有的表。 –
2011-05-26 22:12:27