为了账号安全,请及时绑定邮箱和手机立即绑定

将 Hibernate 升级到 5.4.1 后如何导出架构?

将 Hibernate 升级到 5.4.1 后如何导出架构?

万千封印 2022-06-30 10:38:02
我最近将 Hibernate 从 4.3.7 更新到 5.4.1,并且SchemaExport自 5.1 以来 API 发生了变化。此代码现在显示编译问题(在SchemaExport构造函数和execute方法上)。/** * Method to generate a SQL script which aim is to create SQL tables for the * entities indicated as parameters. */private void generateScript(Class<?>... classes) {    Configuration configuration = new Configuration();    configuration.setProperty(Environment.DIALECT, entityManagerFactory.getProperties().get(DIALECT_PROPERTY).toString());    for (Class<?> entityClass : classes) {        configuration.addAnnotatedClass(entityClass);    }    SchemaExport schemaExport = new SchemaExport(configuration);    schemaExport.setDelimiter(SCRIPT_DELIMITER);    schemaExport.setOutputFile(getScriptPath());    schemaExport.setFormat(true);    boolean consolePrint = false;    boolean exportInDatabase = false;    schemaExport.execute(consolePrint, exportInDatabase, false, true);}我已经看到与此问题相关的其他问题,但没有足够具体的内容来帮助我重写此函数。
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

这是我所做的并且有效:


private void genererScript(Class<?>... classes) {


    StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder()

            .applySetting(Environment.DIALECT, entityManagerFactory.getProperties().get(DIALECT_PROPERTY).toString())

            .build();


    MetadataSources sources = new MetadataSources( standardRegistry );

    for (Class<?> entityClass : classes) {

        sources.addAnnotatedClass(entityClass);

    }


    MetadataImplementor metadata = (MetadataImplementor) sources

            .getMetadataBuilder()

            .build();


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


    try {

        Files.delete(Paths.get(getScriptPath()));

    } catch (IOException e) {

        /*

         * The file did not exist...

         * we do nothing.

         */

    }


    SchemaExport schemaExport = new SchemaExport();

    schemaExport.setDelimiter(SCRIPT_DELIMITER);

    schemaExport.setOutputFile(getScriptPath());

    schemaExport.setFormat(true);

    schemaExport.createOnly(targetTypes, metadata);

}


查看完整回答
反对 回复 2022-06-30
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信