0

我想为特定实体类生成创建表脚本。

我可以使用休眠(hbm2dll 工具)为我的所有类自动生成完整的脚本(自动从 JPA 注释的实体类生成数据模式)但我不知道如何过滤它,所以只有与一个实体类相关的部分遗迹。

问候,桂冠

4

3 回答 3

0

我想如果你用那个单一的实体配置你的 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>
于 2011-05-26T15:19:24.130 回答
0

我自己处理了代码中的脚本生成。基本查询是通过调用 hbm2ddl 工具生成的,我的代码向它们添加了一些细节(例如,如果不存在则添加到创建查询;添加某些创建索引查询;...)

于 2012-03-01T15:50:42.733 回答
0

您的实体之间是否没有声明关联?Hibernate 将根据您对域模型的了解生成外键和映射表等。

如果您只想要单个隔离表的 DDL,您可以只使用该实体配置会话工厂并将其指向一个空数据库。然后,您可以从日志中记录 DDL(如上所述由 Hibernate 生成),然后在获得所需内容时删除此数据库。

但是,如果有任何关联,那么休眠将无法做到这一点。

于 2011-05-26T15:13:11.960 回答