java - 如何在 JPA 中保留原始时区

标签 java hibernate jpa

特别是在 SQL 服务器(我假设其他)中,有一种 datetimeoffset 类型可以存储时间戳,其偏移量other 不同于 GMT。 (看起来像这样“1998-01-01 15:00:00.0000000 +06:00”)

但是尝试将日历持久保存到数据库会自动将其转换为 GMT(尽管我不知道是谁在做 JPA、Hibernate 或 sqljdbc)所以它看起来像这样“1998-01-01 9:00:00.0000000 +00:00"

有什么方法可以防止某些属性出现这种情况吗?

最佳答案

尽管可能还有其他使用 SQL 数据库的解决方案,但我始终遵循以下方法:

在数据库或文件中,我总是以 UTC 格式存储时间,无一异常(exception)。 如果必须保留时区,例如对于 UI,那么我将 UTC 偏移量存储在一个额外的字段中。

这样我就有了正确的时间,如果需要的话,时区也会被保留。

关于java - 如何在 JPA 中保留原始时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591807/

相关文章:

java - 扫描仪只接受一次输入

java - 使用 Java NIO 获取文件创建日期

java - 安卓 : What should I do instead of using a deprecated function(getwidth() )?

java - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Cannot delete or update a parent row: a foreign key constraint fails

java - 使用 Spring Data JPA 和 JPA EntityListener 进行字段级加密

java - JPA 查询,oneToMany 或 manyToOne,都应该有效吗?

java - 为什么这个 Java 长计算返回 NaN?

java - hibernate中的继承,其中派生类没有关联表

java - 具有动态对象模型的 JPA/Hibernate

java - 如何在 JPA @Query 注释中使用 IN 子句