【问题标题】:JPA not generating ddl filesJPA 不生成 ddl 文件
【发布时间】:2019-07-15 18:15:42
【问题描述】:

我正在设置一个 JavaEE Web 应用程序并想生成 ddl 文件,以便查看它们的样子

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence"
             version="2.1">


        <persistence-unit name="contentAggregatorPU">
            <class>contentAggregator.model.Item</class>
            <properties>
                <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
                <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/>
                <property name="javax.persistence.schema-generation.scripts.create-target" value="contentAggregatorCreate.ddl"/>
                <property name="javax.persistence.schema-generation.scripts.drop-target" value="contentAggregatorDrop.ddl"/>
            </properties>
        </persistence-unit>
    </persistence>

它只是不生成文件。

【问题讨论】:

  • 为我工作...
  • 我试过 mvn clean install, build & deploy 在两个不同的wildfly应用服务器上,在我的整个硬盘上没有找到.ddl文件:(

标签: jpa


【解决方案1】:

老实说,我从未使用过该机制。虽然它似乎适用于我的本地资源最小 JPA 游乐场,但在尝试部署到 Wildfly 时却给了我错误。我一直使用一个小的实用程序类来生成模式。

public class SchemaTranslator {
    public static void main(String[] args) throws IOException {

        Class<?>[] entityClasses = { 
            Class1.class, 
            Class2.class,
        };

        MetadataSources metadata = new MetadataSources(new StandardServiceRegistryBuilder()
            .applySetting("hibernate.hbm2ddl.auto", "create")
            .applySetting("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect")
            // .applySetting("hibernate.physical_naming_strategy", "package.MyImprovedNamingStrategy")
            .build()
        );

        // [...] adding annotated classes to metadata here...
        for (Class<?> clazz : entityClasses)
            metadata.addAnnotatedClass(clazz);

        EnumSet<TargetType> targetTypes = EnumSet.of(TargetType.STDOUT, TargetType.SCRIPT);

        SchemaExport export = new SchemaExport()
            // .setHaltOnError( haltOnError )
            .setOutputFile("db-schema.sql")
            .setDelimiter(";");

        export.create(targetTypes, (MetadataImplementor) metadata.buildMetadata());

    }

}

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 2013-10-12
    • 2011-07-23
    • 2011-01-18
    • 1970-01-01
    • 2020-03-02
    • 2011-08-24
    • 2016-01-03
    相关资源
    最近更新 更多