我的上一个问题有一个后续问题:使用Hibernate 4生成SQL数据库创建脚本。
目标是拥有一个命令行工具,能够生成给定持久化单元的SQL模式文件(类似于Hibernate工具中的hibernatetool-hbm2ddl Ant任务)。
如前一个问题的回答所述,可以通过
而不是添加所有实体到
是否可能将持久化单元添加到Hibernate
类似于:
目标是拥有一个命令行工具,能够生成给定持久化单元的SQL模式文件(类似于Hibernate工具中的hibernatetool-hbm2ddl Ant任务)。
如前一个问题的回答所述,可以通过
org.hibernate.tool.hbm2ddl.SchemaExport
实现此功能。而不是添加所有实体到
Configuration
中(如前一个答案所建议的),我想指定一个PersistenceUnit
。是否可能将持久化单元添加到Hibernate
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