Hibernate 为与一个JPA实体类相关的所有表生成创建脚本

Hibernate 为与一个JPA实体类相关的所有表生成创建脚本,hibernate,jpa,hbm2ddl,Hibernate,Jpa,Hbm2ddl,我想为特定的实体类生成创建表脚本 我可以使用hibernate(hbm2dll工具)()为我的所有类自动生成完整的脚本,但我不知道如何对此进行过滤,因此只保留与一个实体类相关的部分 您好, 劳雷斯您的实体之间是否没有声明关联?Hibernate将根据您对域模型的了解生成外键和映射表等 如果您只需要一个独立表的DDL,您可以使用该实体配置会话工厂,并将其指向一个空数据库。然后,您可以从日志中记录DDL(如上所述,由Hibernate生成),然后在获得所需内容后删除此数据库 但是,如果存在任何关联,

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

我可以使用hibernate(hbm2dll工具)()为我的所有类自动生成完整的脚本,但我不知道如何对此进行过滤,因此只保留与一个实体类相关的部分

您好,
劳雷斯

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

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


但是,如果存在任何关联,那么hibernate将无法执行此操作。

我想如果您使用该实体配置persistence.xml文件,排除所有其他未列出的实体,然后在启用DDL自动生成的情况下启动entity manager工厂,您可能会得到这样的结果

<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>

com.stackoverflow.model.SingleEntity
真的

我自己在代码中处理脚本生成。基本查询是通过调用hbm2ddl工具生成的,我的代码为它们添加了一些详细信息(如在create查询中不存在时添加;添加某些create index查询;…)

不幸的是,实体不是独立的(这将很简单)。但是被引用的类(或者更准确地说是它们的表)已经存在。如果CREATETABLE语句使用“if not exists”就可以了,但不幸的是它们不使用。这是一个新表吗?如果使用update而不是create,它将创建包含所有外键和引用的新表。。如果这是唯一的域更改,那么hibernate将只创建新表,而不处理现有表。