首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置hibernate.reveng.xml以使用hibernate3-maven-plugin和Postgre检测序列PK生成器

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

Stack Overflow用户
提问于 2010-06-07 01:20:41
回答 2查看 9.7K关注 0票数 5

有没有办法配置hibernate3-maven-plugin,以便为primary-key检测序列生成器?我使用自下而上的方法进行hibernate配置(这意味着让hibernate-tools通过现有数据库模式上的jdbc-connection,通过reverse-engineering为您生成hibernate配置)。我读过this,但也读过this (这两个可能是无关的,但也可以留下一些提示)。我的hibernate.reveng.xml如下:

代码语言:javascript
复制
<?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>

我希望它能生成如下所示的Orders.hbm.xml文件:

代码语言:javascript
复制
<?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>

...but改为接收以下内容:

代码语言:javascript
复制
<?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>

我知道hibernate3-maven-plugin正在读取我的hibernate.reveng.xml,因为每当文件中出现语法错误时,我都会遇到maven错误,所以pom.xml似乎是正确的,hibernate.reveng.xml语法也是正确的。

有什么线索吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-08 01:13:24

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

代码语言:javascript
复制
<?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>
票数 5
EN

Stack Overflow用户

发布于 2010-06-07 05:56:09

您可以尝试使用<param name="table">...</param> (这是我在documentationthis thread中看到的)。所以就像这样:

代码语言:javascript
复制
<?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="table">ORDERS_ORDER_ID_seq</param>
            </generator>
            <key-column name="ORDER_ID"/>
        </primary-key>
    </table>
</hibernate-reverse-engineering>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2985101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档