java - 如何在java中为DB2中定义的唯一键定义实体bean字段为TIMESTAMP DEFAULT CURRENT_TIMESTAMP?
问题描述
我试图弄清楚如何为具有唯一问题的表编写实体 bean ......特别是如何处理作为 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
为 null 以外的值的代码。我也尝试过其他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;
解决方案
推荐阅读
- javascript - 循环更改 SVG 填充
- bixby - “不总是返回格式化值”错误怎么办?
- c# - 如何在打印机上打印测试页?
- php - 分叉了一个 PHP tinyboard 网站,无法用中文发帖(但可以通过管理面板进行)
- java - 如何设计一个对域对象进行大量操作的 API 包装器?(需要指导)
- visual-studio-code - 如何在 VS Code 中使用 SF Mono?
- raku - 累积 Z op 抛出“此 Seq 的迭代器已被另一个 Seq 使用/消耗”
- linux - 如何使 gdb 在“符号查找错误”时中断
- ruby-on-rails - 休息客户端/硒网络驱动程序的 Heroku 超时
- string - 在bash中循环查找结果