java 如何将数据库SYSDATE注入列

pod7payv  于 2022-12-02  发布在  Java
关注(0)|答案(1)|浏览(123)

我尝试将数据库(ORACLE)SYSDATE注入到一个列中。我希望每次发生UPDATE时,列“dat_update”自动接收数据库日期。
我试过使用Hibernate @ColumnTransformer,但它不起作用。我不确定这个注解是否是实现这一点的最佳替代方案。
`

@Column(name = "dat_update")
@ColumnTransformer(read = "(SELECT SYSDATE FROM DUAL)", write = "?")
private ZonedDateTime lastUpdatedAt;

`

of1yzvn4

of1yzvn41#

就Oracle而言,数据库触发器完成了这项工作。
(设置日期格式;您不必这样做,但它将帮助我们以我们想要的方式查看日期)

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';

Session altered.

SQL> create table test
  2    (id         number generated always as identity,
  3     name       varchar2(10),
  4     dat_update date
  5    );

Table created.

SQL> create or replace trigger trg_biu_test
  2    before insert or update on test
  3    for each row
  4  begin
  5    :new.dat_update := sysdate;
  6  end;
  7  /

Trigger created.

让我们测试一下:

SQL> insert into test (name) values ('Little');

1 row created.

SQL> select * from test order by id;

        ID NAME       DAT_UPDATE
---------- ---------- -------------------
         1 Little     01.12.2022 20:22:03

SQL> insert into test (name) values ('Foot');

1 row created.

SQL> update test set name = 'Yasuda' where name = 'Little';

1 row updated.

SQL> select * from test order by id;

        ID NAME       DAT_UPDATE
---------- ---------- -------------------
         1 Yasuda     01.12.2022 20:22:33
         2 Foot       01.12.2022 20:22:19

SQL>

相关问题