【问题标题】:Hibernate tools are not generating POJOs with Oracle sequence?Hibernate 工具不使用 Oracle 序列生成 POJO?
【发布时间】:2016-01-19 13:39:18
【问题描述】:

我正在尝试使用 Hibernate Tools eclipse 插件/Maven Hibernate 插件生成 Hibernate 实体 pojo。 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;
}

我尝试了以下 POST 中给出的选项: @SequenceGenerator - allocationSize, reverse engineering with Eclipse Hibernate Tools

但它没有考虑oracle序列。它正在生成@id 元素,如下所示:

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

请找到 hibernate-reverse.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>               

我在这里有什么遗漏吗?请指教。

【问题讨论】:

    标签: eclipse oracle hibernate maven hibernate-tools


    【解决方案1】:

    小幅调整适用于这两种情况。

    将 jdbc 类型从 NUMERIC 更改为 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-14
      • 2011-02-01
      • 2010-12-16
      • 1970-01-01
      • 2012-01-13
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多