Hbm2DDL SchemaExport создает пустой выходной файл - PullRequest
0 голосов
/ 17 октября 2018

мы пытались программно использовать функцию экспорта в файл hbm2ddl в hibernate 4.3.11 до сих пор безуспешно.Для этой задачи мы создали небольшую автономную утилиту, показанную ниже:

import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
import org.hibernate.metamodel.MetadataSources;
import org.hibernate.metamodel.source.MetadataImplementor;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class HibernateSchemaGenerationUtil {

    public static void main(String[] args) {

        ServiceRegistry serviceReg = buildCfg();

        MetadataImplementor metadata = (MetadataImplementor) new MetadataSources(serviceReg).buildMetadata();

        SchemaExport schemaExport = new SchemaExport(metadata);

        schemaExport.setOutputFile("hbm2schema.sql");

        schemaExport.setHaltOnError(true);

        System.out.println("Creating Output sql file at location: hbm2schema.sql");

        schemaExport.create(true, false);

        ((StandardServiceRegistryImpl) serviceReg).destroy();

        System.out.println("Done...");
    }

    public static StandardServiceRegistryImpl buildCfg() {

        return (StandardServiceRegistryImpl) new StandardServiceRegistryBuilder()
               .configure("hibernate.cfg.xml")
               .build();
    }

}

Используемый файл hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC  
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  

<hibernate-configuration>
    <session-factory>  
        <property name="hbm2ddl.auto">create</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/my_rsp_request_creation_test?useSSL=false</property>
        <property name="hibernate.connection.username">bla</property> 
        <property name="hibernate.connection.password">bla-bla</property> 
        <property name="hibernate.current_session_context_class">thread</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.jdbc.batch_size">25</property>
        <property name="hibernate.order_inserts">true</property>
        <property name="hibernate.order_updates">true</property>
        <property name="hibernate.max_fetch_depth">3</property>
        <mapping resource="request_component.hbm.xml"/>
        <mapping resource="request_contract.hbm.xml"/>
        <mapping resource="request_dimensions.hbm.xml"/>
        <mapping resource="request_product_attributes.hbm.xml"/>
        <mapping resource="request_product_certificate.hbm.xml"/>
        <mapping resource="request_product_characteristics_no_units.hbm.xml"/>
        <mapping resource="request_product_characteristics_with_units.hbm.xml"/>
        <mapping resource="request_product_custom_characteristics.hbm.xml"/>
        <mapping resource="request_product_delivery_address.hbm.xml"/>
        <mapping resource="request_product_payment_type.hbm.xml"/>
        <mapping resource="request_product_risk.hbm.xml"/>
        <mapping resource="request_product_version.hbm.xml"/>
        <mapping resource="request_product_versioned_characteristics_no_units.hbm.xml"/>
        <mapping resource="request_product_versioned_characteristics_with_units.hbm.xml"/>
        <mapping resource="request_product_versioned_custom_characteristics.hbm.xml"/>
        <mapping resource="request_product.hbm.xml"/>
        <mapping resource="request_sanctions.hbm.xml"/>
        <mapping resource="request_standby_date.hbm.xml"/>
        <mapping resource="rsp_request_product.hbm.xml"/>
    </session-factory>  
</hibernate-configuration>

Программа работает без ошибок, но hbm2schema.sqlпроизводится пустой.На самом деле вывод выглядит следующим образом:

Οκτ 17, 2018 11:10:28 ΠΜ org.hibernate.Version Log Версия INFO: HHH000412: Hibernate Core {4.3.11.Final} Οκτ 17, 201811:10:28 ΠΜ org.hibernate.cfg.Environment INFO: HHH000206: hibernate.properties не найден Οκτ 17, 2018 11:10:28 ΠΜ org.hibernate.cfg.Environment buildBytecodeProvider INFO: HHH000021: имя поставщика байт-кода: javassist Ο17, 2018 11:10:29 ΠΜ org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure ПРЕДУПРЕЖДЕНИЕ: HHH000402: Использование встроенного пула соединений Hibernate (не для производственного использования!) 17κτ 17, 2018 11:10:29ΠΜ org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator ИНФОРМАЦИЯ: HHH000401: с помощью драйвера [com.mysql.jdbc.Driver] по URL-адресу [jdbc: mysql: // localhost: 3306 / my_rsp_reτrequest_ use_service)17, 2018 11:10:29 ΠΜ org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH000046: Свойства соединения: {user = bla, password = ****} 17κτ 17, 2018 11:10:29 ΠΜ org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator ИНФОРМАЦИЯ: HHH000006: режим автоматической фиксации:false 17κτ 17, 2018 11:10:29 ΠΜ org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure INFO: HHH000115: Размер пула соединений Hibernate: 20 (мин = 1) 17κτ 17, 2018 11:10:30 ΠΜorg.hibernate.dialect.Dialect INFO: HHH000400: Использование dialect: org.hibernate.dialect.MySQL5InnoDBDialect Создание выходного файла sql по адресу: hbm2schema.sql Οκτ 17, 2018 11:10:30 ΠΜ org.hibernate.tool.hbmmalportвыполнить INFO: HHH000227: запуск экспорта схемы hbm2ddl 17 сентября 2018 11:10:30 ΠΜ org.hibernate.tool.hbm2ddl.SchemaExport выполнить INFO: HHH000230: экспорт схемы завершен 17 марта 2018 11:10:30 ΠΜ org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop ИНФОРМАЦИЯ: HHH000030: очистка подключенияn pool [jdbc: mysql: // localhost: 3306 / my_rsp_request_creation_test? useSSL = false] Готово ...

Фактически в соответствии с javadoc для schemaExport.create (true, false) сгенерированный sql должен даже отображаться на экране, поэтому не только выходной файл пуст, но и экспорт не отображается на экране.Любые предложения по этому кто-нибудь ??

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...