我正在尝试使用Hibernate工具生成Hibernate实体pojos,eclipse插件/Maven Hibernate插件。POJO生成的很好,但是我需要@Id来使用Oracle序列,如下所示:
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="patient_sequence")
@SequenceGenerator(name="patient_sequence", sequenceName="PATIENT_SEQ")
@Column(name = "PT_KEY", unique = true, nullable = false, precision = 22, scale = 0)
public Long getPtKey() {
return this.ptKey;
}我在下面的文章中尝试了这个选项:@SequenceGenerator - allocationSize, reverse engineering with Eclipse Hibernate Tools
但它并没有考虑甲骨文的顺序。它正在生成@id元素如下:
@Id
@Column(name = "PT_KEY", unique = true, nullable = false, precision = 22, scale = 0)
public BigDecimal getPtKey() {
return this.ptKey;
}如下所示,请查找hibernate-recse.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
<hibernate-reverse-engineering>
<schema-selection match-schema="DOC" />
<type-mapping>
<sql-type jdbc-type="NUMERIC" hibernate-type="java.lang.Long" />
</type-mapping>
<table-filter match-name=".*"></table-filter>
<table name="Patient">
<primary-key>
<generator class="org.hibernate.id.SequenceGenerator">
<param name="sequence">PATIENT_SEQ</param>
</generator>
<key-column name="PT_KEY" />
</primary-key>
</table>
</hibernate-reverse-engineering> 我在这里有遗漏什么吗?请指点。
发布于 2016-01-19 05:39:18
对这两种情况都进行小的调整。
将jdbc类型从数值更改为十进制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
<hibernate-reverse-engineering>
<schema-selection match-schema="DOC" />
<type-mapping>
<sql-type jdbc-type="DECIMAL" hibernate-type="java.lang.Long" />
</type-mapping>
<table-filter match-name=".*"></table-filter>
<table name="Patient">
<primary-key>
<generator class="sequence">
<param name="sequence">PATIENT_SEQ</param>
</generator>
<key-column name="PT_KEY" />
</primary-key>
</table>https://stackoverflow.com/questions/34857481
复制相似问题