2014-11-07 2 views
0

У меня возникают проблемы при генерации последовательностей для данных оракула, работающих под тем же экземпляром, что и у других, с той же структурой данных. Вот фрагмент моего persistence.xml где я определить различные схемы в соответствии с единицей сохранения:Как определить имена последовательностей в Hibernate?

<persistence-unit name="oracle_development" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 
     <property name="hibernate.archive.autodetection" value="class" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" /> 
     <property name="hibernate.connection.charSet" value="UTF-8" /> 
     <property name="hibernate.show_sql" value="false" /> 
     <property name="hibernate.format_sql" value="false" /> 
     <property name="hibernate.connection.autocommit" value="false" /> 
     <property name="hibernate.ejb.entitymanager_factory_name" 
      value="o11g" /> 
     <property name="hibernate.default_schema" value="devdatabase"/> 
    </properties> 
</persistence-unit> 

<persistence-unit name="oracle_production" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 
     <property name="hibernate.archive.autodetection" value="class" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" /> 
     <property name="hibernate.connection.charSet" value="UTF-8" /> 
     <property name="hibernate.show_sql" value="false" /> 
     <property name="hibernate.format_sql" value="false" /> 
     <property name="hibernate.connection.autocommit" value="false" /> 
     <property name="hibernate.ejb.entitymanager_factory_name" 
      value="o11g" /> 
     <property name="hibernate.default_schema" value="proddatabase"/> 
    </properties> 
</persistence-unit> 

Ну, таблицы генерируются отлично, когда имена таблиц в создании команды включает в себя схему по умолчанию в качестве спецификатора. Но последовательности не генерируются в «proddatabase», если они уже созданы в «devdatabase», например ... Любая помощь?

ответ

0

я посвятил blog post для наиболее распространенных стратегий генерации Hibernate DDL:

  1. hibernate.hbm2ddl.auto =»обновление» удобно, но менее гибким, если вы планируете добавить функции или выполнение некоторых пользовательских сценариев.
  2. Наиболее гибким подходом является генерация сценариев DDL с помощью «org.hibernate.tool.ant.HibernateToolTask», а затем использование компонента для запуска сценариев при запуске контекста. Сценарии destroy вызывают, когда контекст Spring закрыт.

Второй подход гораздо более гибкий, особенно если вы хотите смешать JPA Entity Model with jOOQ Table Model.

Излишне говорить, что это только проблема тестирования интеграции, так как для производственной среды мы используем Flyway. Таким образом, вы не должны полагаться на Hibernate для управления вашей схемой базы данных, потому что она более рискованная, менее гибкая, и она не очень хорошо работает с CI и CD.

+0

Даже если я согласен, это не главное. Точка пытается решить проблему при использовании этих инструментов, которые когда-то были доступны для использования, она должна работать, даже если это не лучший подход. –

Смежные вопросы