Как определить поле компонента Entity в Java для уникального ключа, определенного в DB2 как TIMESTAMP DEFAULT CURRENT_TIMESTAMP? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь выяснить, как написать компонент Entity для таблицы с уникальной проблемой ... в частности, как бороться с уникальным ключом, являющимся столбцом TIMESTAMP. Я хочу позволить БД создать значение, используя его предложение DEFAULT.

Я попытался добавить @GeneratedValue(strategy = GenerationType.AUTO) к определению поля, изменив его с

@Id
@NotNull
@Column(name = "ROW_ADD_TS",
        columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP",
        insertable = false,
        updatable = false)
protected Timestamp rowAddDateTime; // WAS org.joda.time.DateTime

до

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ROW_ADD_TS",
        columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP",
        insertable = false,
        updatable = false)
protected Timestamp rowAddDateTime; // WAS org.joda.time.DateTime

И комментирование любого кода, который устанавливает rowAddDateTime значение, отличное от нуля. Я также пробовал другие значения GenerationType ... все безрезультатно.

Вот версия DB2 определения таблицы и единственный уникальный индекс, фактически определенный на сервере.

CREATE TABLE X.LOGS
    (
        APP_NAM_TX CHARACTER(30) DEFAULT ' ' NOT NULL, 
        LOC_ID CHARACTER(3) DEFAULT ' ' NOT NULL,
        BIL_DIV_ID SMALLINT DEFAULT 0 NOT NULL, 
        USR_NAM_TX CHARACTER(20) DEFAULT ' ' NOT NULL,
        FRM_NAM_TX CHARACTER(30) DEFAULT ' ' NOT NULL, 
        ROW_ADD_TS TIMESTAMP DEFAULT CURRENT TIMESTAMP NOT NULL, 
        ACN_CD CHARACTER(2) DEFAULT ' ' NOT NULL, 
        ACN_DTL_TX VARCHAR(255) DEFAULT '' NOT NULL, 
        DRN_AM DECIMAL(7, 2) DEFAULT 0.0 NOT NULL, 
        ADL_DRN_AM DECIMAL(7, 2) DEFAULT 0.0 NOT NULL, 
        RCD_CNT_QY INTEGER DEFAULT 0 NOT NULL, 
        QRY_CNT_QY SMALLINT DEFAULT 0 NOT NULL, 
        USR_NAM_DTL_TX CHARACTER(60), 
        DAB_NAM_ID SMALLINT DEFAULT 0
    );

CREATE UNIQUE INDEX X.LOGS_1IX ON X.LOGS
    (
        ROW_ADD_TS, APP_NAM_TX, LOC_ID, BIL_DIV_ID, USR_NAM_TX, FRM_NAM_TX
    )   ALLOW REVERSE SCANS;
...