Я использую hibernate3-maven-plugin
для вызова hbm2ddl
для экспорта ddl для моих сущностей.
Этот файл ddl затем используется dbmaintain
для инициализации встроенной базы данных derby.
Но когда я запускаю свое приложение Java Enterprise с этой базой данных, я получаю следующую ошибку:
16:48:41.714 ERROR [main] o.h.util.JDBCExceptionReporter: SEQUENCE 'HIBERNATE_SEQUENCE' does not exist.
... это правильно, потому что единственный код в сгенерированном файле ddl, который не является напрямуюк моим сущностям относится следующее:
create table hibernate_unique_key (
next_hi integer
);
insert into hibernate_unique_key values ( 0 );
Файл не содержит ничего о последовательностях.
Он работает, если я не использую dbmaintain
и просто задаю hibernate.hbm2ddl.auto
на update
, но это ничего, что я хочу использовать в производстве (как советуют большинство источников).
Разве не должен ddl, сгенерированный hbm2ddl
, содержать все, что нужно для hibernate?
Конфигурация Maven:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>jpaconfiguration</implementation>
</component>
</components>
<componentProperties>
<persistenceunit>MyPersistenceUnitName</persistenceunit>
<outputfilename>schema.ddl</outputfilename>
<drop>false</drop>
<create>true</create>
<export>false</export>
<format>true</format>
</componentProperties>
</configuration>
</plugin>
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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="MyPersistenceUnitName">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:app/jdbc/MyPersistenceUnitName</jta-data-source>
<properties>
<property name="hibernate.id.new_generator_mappings" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
<property name="javax.persistence.validation.group.pre-persist" value="some.ServerValidation" />
<property name="javax.persistence.validation.group.pre-update" value="some.ServerValidation" />
</properties>
</persistence-unit>
</persistence>