Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 DBUnit数据集-插入UTC时间戳_Java_Jpa_H2_Dbunit - Fatal编程技术网

Java DBUnit数据集-插入UTC时间戳

Java DBUnit数据集-插入UTC时间戳,java,jpa,h2,dbunit,Java,Jpa,H2,Dbunit,假设我们有一个简单的单元测试数据集: <?xml version="1.0" encoding="UTF-8"?> <dataset> <my_entity id="1" start_date="2020-10-18 17:00:00 +0000" /> </dataset> 其中start\u date映射到实体对

假设我们有一个简单的单元测试数据集:

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <my_entity
        id="1"
        start_date="2020-10-18 17:00:00 +0000"
    />
</dataset>

其中
start\u date
映射到实体对象中的
Instant
字段,以及数据库中的
TIMESTAMP
列(h2-用于测试)

问题是:这不会导致UTC时间戳“2020-10-18T17:00:00Z”被放入测试数据库! 最后出现的是“2020-10-18T16:00:00Z”,即数据加载器假设提供的日期不是UTC,而是从UTC偏移0的夏时制时间,即一小时后。如果您在冬季将10月18日改为27日,则时间会匹配

如何在数据集中加载适当的UTC时间戳,而不必担心是夏季还是冬季?

在H2中,应使用带时区的
时间戳(9)数据类型来存储
即时
值,如果您的持久化层将它们直接传递到H2并直接读取它们,那么它们就可以了;H2本机支持
即时
。您的持久层很可能进行了一些不正确的转换。(
TIMESTAMP
数据类型没有时区偏移信息,无法可靠地用于DST或其他转换附近的时间戳。)在H2中,
时间戳(9)使用时区
数据类型应用于存储
即时
值,如果您的持久层按原样直接将其传递给H2并直接读取,则这些值就可以了;H2本机支持
即时
。您的持久层很可能进行了一些不正确的转换。(
TIMESTAMP
数据类型没有时区偏移信息,无法可靠地用于DST附近的时间戳或其他转换。)