使用hibernate3-maven-plugin和Postgre配置hibernate.reveng.xml以检测序列PK生成器

mmm*_*mmm 5 maven-2 hibernate maven-plugin maven

有没有一种方法可以配置hibernate3-maven-plugin为检测序列生成器primary-key?我正在使用一种自下而上的hibernate配置方法(这意味着让您在现有数据库架构上hibernate-tools使用a生成休眠配置)。我读过这个,而且已经(这两个可能是不相关的,也可以留下一个提示)。我的如下:jdbc-connectionreverse-engineeringhibernate.reveng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering 
 SYSTEM "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>
    <table name="ORDERS">
        <primary-key>
            <!-- setting up a specific id generator for a table -->
            <generator class="sequence">
                <param name="sequence">ORDERS_ORDER_ID_seq</param>
            </generator>
            <key-column name="ORDER_ID"/>
        </primary-key>
    </table>
</hibernate-reverse-engineering>
Run Code Online (Sandbox Code Playgroud)

我期望它生成这样的Orders.hbm.xml文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2010-06-06 18:55:42 by Hibernate Tools 3.2.2.GA -->
<hibernate-mapping>
    <class name="some.package.Orders" table="orders" schema="public">
        <id name="orderId" type="long">
            <column name="order_id" />
            <generator class="sequence">
                <param name="sequence">ORDERS_ORDER_ID_seq</param>
            </generator>
        </id>
    ...
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

...但是却收到了:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2010-06-06 18:55:42 by Hibernate Tools 3.2.2.GA -->
<hibernate-mapping>
    <class name="some.package.Orders" table="orders" schema="public">
        <id name="orderId" type="long">
            <column name="order_id" />
            <generator class="assigned" />
        </id>
    ...
    </class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

我知道我hibernate.reveng.xml正在被读取hibernate3-maven-plugin,因为只要文件中出现语法错误,我都会遇到Maven错误,因此pom.xml看来是正确的,而且在hibernate.reveng.xml语法上也是正确的。

有什么线索吗?

mmm*_*mmm 5

下面的代码最终为我工作。我只需order要用小写形式传递表名(我在DDL中使用了大写字母,所以我实际上听不懂,但这是可行的)。还schema需要提供属性。该<key-column name="pkey"/>是可选的(如果你遵循休眠命名约定)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering 
 SYSTEM "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>
    <table name="orders" schema="public">
        <primary-key>
            <!-- setting up a specific id generator for a table -->
            <generator class="sequence">
                <param name="sequence">ORDERS_ORDER_ID_seq</param>
            </generator>
        </primary-key>
    </table>
</hibernate-reverse-engineering>
Run Code Online (Sandbox Code Playgroud)