Я пытаюсь выяснить, как написать компонент 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;