有没有办法配置hibernate3-maven-plugin,以便为primary-key检测序列生成器?我使用自下而上的方法进行hibernate配置(这意味着让hibernate-tools通过现有数据库模式上的jdbc-connection,通过reverse-engineering为您生成hibernate配置)。我读过this,但也读过this (这两个可能是无关的,但也可以留下一些提示)。我的hibernate.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>我希望它能生成如下所示的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>...but改为接收以下内容:
<?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语法也是正确的。
有什么线索吗?
发布于 2010-06-08 01:13:24
下面是最终为我工作的代码。我只需要传递小写的order表名(我在DDL中使用了大写字母,所以我实际上不理解,但这是有效的)。此外,还需要提供schema属性。<key-column name="pkey"/>是可选的(如果您遵循hibernate命名约定)。
<?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>发布于 2010-06-07 05:56:09
您可以尝试使用<param name="table">...</param> (这是我在documentation或this thread中看到的)。所以就像这样:
<?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>https://stackoverflow.com/questions/2985101
复制相似问题