1

I am trying to generate Hibernate entity pojos using Hibernate Tools eclipse plugin/Maven Hibernate Plugin. POJOs are generating fine, but I need @Id to use the Oracle sequence as given below :

@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;
}

I tried the option as given in below POST: @SequenceGenerator - allocationSize, reverse engineering with Eclipse Hibernate Tools

But it is not considering oracle sequence. It is generating @id element as below:

@Id
@Column(name = "PT_KEY", unique = true, nullable = false, precision = 22, scale = 0)
public BigDecimal getPtKey() {
    return this.ptKey;
}

Please find hibernate-reverse.xml as below :

 <?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>               

Am I missing any thing here? Please advice.

Community
  • 1
  • 1
sandeep
  • 43
  • 1
  • 6

1 Answers1

0

A small tweak would work for both cases.

Change jdbc type from NUMERIC to DECIMAL

<?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>