1

我有一个列的 hbm 映射,它设置为身份生成器

<class name="com.dummy.TestADTO" table="table_a">
    <id name="id" type="integer" column="ID">
        <generator class="identity"/>
    </id>
...
</class>

其中一半已经与我定义的 db2 键表列一起使用

ID NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE)

我的 dto 如下所示:

package com.dummy;

    class TestADTO {

        private Integer id;

        public Integer getId(){ return id; }
        public void setId(Integer id) { this.id = id; }
    }
  1. “一半”的意思是,我可以为 id 属性设置一个空值,并且当调用 hibernate session.merge(testadto) 时,生成器会设置 ID 列:

insert into test_a(id) values (default);

  1. 另一半不起作用的是,我可以为 TestADTO.id=155 设置一个值,但是当 hibernate 使用 session.merge(testadto) 插入到 db 时,不使用该值。而是使用来自身份生成器的下一个值:

我想要的是:

insert into test_a(id) values (?); (其中 ? 将被 155 替换)

我得到了什么:

insert into test_a(id) values (default);

我怎样才能让它工作?

4

0 回答 0