Hibernate 冬眠&;Derby:hbm2dll不创建序列

Hibernate 冬眠&;Derby:hbm2dll不创建序列,hibernate,maven,jpa-2.0,java-ee-6,derby,Hibernate,Maven,Jpa 2.0,Java Ee 6,Derby,我正在使用hibernate3 maven插件调用hbm2ddl来导出实体的ddl 然后,dbmaintain使用此ddl文件初始化嵌入式derby数据库 但是,当我使用此数据库启动Java企业应用程序时,会出现以下错误: 16:48:41.714 ERROR [main] o.h.util.JDBCExceptionReporter: SEQUENCE 'HIBERNATE_SEQUENCE' does not exist. …这是正确的,因为生成的ddl文件中唯一与我的实体不直接相关的代码

我正在使用hibernate3 maven插件调用hbm2ddl来导出实体的ddl

然后,
dbmaintain
使用此ddl文件初始化嵌入式derby数据库

但是,当我使用此数据库启动Java企业应用程序时,会出现以下错误:

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
,它就可以工作,但我不想在生产中使用它(因为大多数来源都反对它)

hbm2ddl
生成的ddl不应该包含hibernate所需的所有内容吗

Maven配置:

org.codehaus.mojo
hibernate3 maven插件
hbm2ddl
JPA配置
MyPersistenceUnitName
schema.ddl
假的
真的
假的
真的
persistence.xml:

org.hibernate.ejb.HibernatePersistence
java:app/jdbc/MyPersistenceUnitName

我终于找到了答案:

问题是(最新版本)的依赖项完全过时,无法处理我的JPA2.0注释

我通过调用
mvn-xhibernate3:hbm2ddl
获得了插件依赖项的列表,并通过手动将插件的所有hibernate依赖项覆盖到最新版本修复了该问题:

<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>
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-tools</artifactId>
            <version>3.2.4.GA</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.3.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.5.6-Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
    </dependencies>
</plugin>

org.codehaus.mojo
hibernate3 maven插件
hbm2ddl
JPA配置
MyPersistenceUnitName
schema.ddl
假的
真的
假的
真的
org.hibernate
休眠工具
3.2.4.GA
org.hibernate
冬眠核心
3.6.8.最终版本
org.hibernate
休眠实体管理器
3.6.3.最终版本
org.hibernate
休眠注释
3.5.6-最终版本
org.hibernate
休眠验证器
4.2.0.4最终版本
<?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>
<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>
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-tools</artifactId>
            <version>3.2.4.GA</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.3.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.5.6-Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
    </dependencies>
</plugin>