Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JpaRepository保存方法将日期存储为Oracle SYSDATE?_Java_Spring_Oracle_Spring Data_Spring Data Jpa - Fatal编程技术网

Java 如何使用JpaRepository保存方法将日期存储为Oracle SYSDATE?

Java 如何使用JpaRepository保存方法将日期存储为Oracle SYSDATE?,java,spring,oracle,spring-data,spring-data-jpa,Java,Spring,Oracle,Spring Data,Spring Data Jpa,我正在从事一个SpringDataJPA项目,我想在表的日期字段中存储OracleSYSDATE。我根本不能修改这个表 现在,我要做的是将newdate()传递到该日期字段。这是不正确的,因为Oracle服务器位于不同的时区 我没有编写任何查询来插入数据,而是使用JpaRepositorysave()方法 我该怎么做 p.S.我不想在我的代码中硬编码数据库服务器的时区。没有直接的方法(请参阅) 您可以执行从dual选择SYSDATE并使用结果设置属性 获取sysdate的方法可以在Spring数

我正在从事一个SpringDataJPA项目,我想在表的日期字段中存储Oracle
SYSDATE
。我根本不能修改这个表

现在,我要做的是将
newdate()
传递到该日期字段。这是不正确的,因为Oracle服务器位于不同的时区

我没有编写任何查询来插入数据,而是使用
JpaRepository
save()
方法

我该怎么做


p.S.我不想在我的代码中硬编码数据库服务器的时区。

没有直接的方法(请参阅)

您可以执行
从dual选择SYSDATE
并使用结果设置属性

获取sysdate的方法可以在Spring数据存储库中

@Query(value=`select SYSDATE from dual`, nativeQuery=true)
Date currentDate();
您可以在
@PrePersist
侦听器中设置该值(请参阅)

但我认为您无法在这些侦听器中执行查询,因此下一步是创建Spring Data的
save
方法的自定义实现,以便它在实际保存任何内容之前获得这样一个值并使其对侦听器可用。或者,可以使用查询的单独连接

显然,这一切都增加了另一个数据库往返,这相当昂贵


另一种方法是获取服务器的当前时间一次,然后使用该时间确定要使用的正确偏移量,并使用该偏移量在本地创建时间戳。如果应用程序服务器和数据库服务器有不同的夏令时规则,这会更快、更容易,但会中断。

可能重复@AbhijitSarkar我找不到这样问的答案,因为我没有太多时间完成此任务。任何帮助都将是巨大的appreciated@AbhijitSarkar你知道问题是什么吗?你能读吗?看这个回答一个问题,有可能在数据库中将列默认为sysdate吗?