配置hibernate.reveng.xml以检测带有hibernate3 maven插件和Postgre的序列PK生成器
有没有办法配置hibernate3 maven插件,以便检测到主键的序列生成器?我对配置hibernate.reveng.xml以检测带有hibernate3 maven插件和Postgre的序列PK生成器,hibernate,maven-2,maven,maven-plugin,Hibernate,Maven 2,Maven,Maven Plugin,有没有办法配置hibernate3 maven插件,以便检测到主键的序列生成器?我对hibernate配置使用自底向上的方法(这意味着让hibernate工具通过jdbc连接在现有数据库模式上通过反向工程为您生成hibernate配置)。我已经读过了,但也已经读过了(这两个可以是无关的,但也可以留下一个提示)。我的hibernate.reveng.xml如下所示: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernat
hibernate
配置使用自底向上的方法(这意味着让hibernate工具
通过jdbc连接
在现有数据库模式上通过反向工程
为您生成hibernate配置)。我已经读过了,但也已经读过了(这两个可以是无关的,但也可以留下一个提示)。我的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>
…但收到的却是:
<?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>
...
我知道我的hibernate.reveng.xml
正在被hibernate3 maven插件
读取,因为每当文件中出现语法错误时,我都会遇到maven错误,所以pom.xml
似乎是正确的,hibernate.reveng.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>
<?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>
订单\订单\ ID\顺序
下面是最终对我有用的代码。我只需以小写形式传递顺序
表名(我在DDL中使用大写字母,所以我实际上不明白,但这是可行的)。还需要提供schema
属性。
是可选的(如果遵循hibernate命名约定)
订单\订单\ ID\顺序
感谢您的回答,它帮助我找到了解决方案。但是,name
属性不是问题所在。这两种方法,即表
和序列
都可以根据需要正常工作。我用对我有用的代码更新了我的问题。@mmm:嗯,不知道我的答案有什么帮助,但是。。。不客气:)请随意发布您的解决方案作为答案并接受它(这实际上是您应该做的)。好的,添加解决方案作为答案。您的回答通过指向另一个讨论得到了帮助,我最终注意到模式
属性可能丢失:)。这看起来很有希望,但在我的例子中,Hibernate忽略了表
标记,只处理表过滤器
。当插入主键
块时,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>