一個後續問題我剛纔的問題:Generate an SQL DB creation script with Hibernate 4休眠的SchemaExport和持久性單元
的目標是有能夠產生與給定的持久性單元(同樣的SQL架構到hibernatetool-文件中的命令行工具就是hbm2ddl螞蟻出現在休眠的工具任務)。
根據我對上一個問題的回答,可以用org.hibernate.tool.hbm2ddl.SchemaExport
來實現。
而不是將所有實體添加到Configuration
(如前面的答案中所建議的),我想指定一個PersistenceUnit
。
是否有可能加入休眠單元休眠Configuration
?
喜歡的東西
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
...
EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory("persistentUnitName", properties);
Configuration configuration = new Configuration();
... missing part ...
SchemaExport schemaExport = new SchemaExport(configuration);
schemaExport.setOutputFile("schema.sql");
...
編輯作爲評論的樣品persistence.xml
要求。每個類都被註解@Entity
<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_1_0.xsd"
version="1.0"
>
<persistence-unit
name="doiPersistenceUnit"
transaction-type="JTA"
>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/doi</jta-data-source>
<class>ch.ethz.id.wai.doi.bo.Doi</class>
[...]
<class>ch.ethz.id.wai.doi.bo.DoiPool</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.connection.characterEncoding" value="utf8" />
<property name="hibernate.connection.charSet" value="utf8" />
</properties>
</persistence-unit>
</persistence>
所以你想保存'config.addAnnotatedClass(MyMappedPojo1.class);'行? – yair
@yair是的我想避免手動指定所有的類(並避免對它們進行硬編碼)。我知道我可以解析persistence.xml文件,但我懷疑有一種更簡單的方法。 – Matteo
我想你也錯過了將方言傳遞給配置 - 當SchemaExport被創建時它會失敗。 – kboom