相关疑难解决方法(0)

hibernate 5 + ZonedDateTime + postgresql inlcude时区和偏移量

我有一个正在运行的应用程序spring boot 1.3 + hibernate 5 + java 8 + ZonedDateTime + postgresql并且在其中一个表中我有以下字段.

@Column(name = "DATE_ENABLED")
@Type(type="java.time.ZonedDateTime")   
private ZonedDateTime dateEnabled;

@Column(name = "DATE_DISABLED")
@Type(type="java.time.ZonedDateTime")   
private ZonedDateTime dateDisabled;
Run Code Online (Sandbox Code Playgroud)

如果我运行该应用程序,那么我发现默认情况下会生成"没有时区的时间戳"

testDB=# \d type
                Table "public.type"
             Column             |            Type             | Modifiers 
--------------------------------+-----------------------------+-----------
 type_id                        | bytea                       | not null
 date_disabled                  | timestamp without time zone | 
 date_enabled                   | timestamp without time zone | 
Run Code Online (Sandbox Code Playgroud)

我知道如果我将columnDefinition ="TIMESTAMP WITH TIME ZONE"添加到列中,例如

@Column(name = "DATE_DISABLED", columnDefinition= "TIMESTAMP WITH TIME ZONE")
Run Code Online (Sandbox Code Playgroud)

然后它正常工作,我能够看到hibernate创建了一个带有时区的列,但是如果我正确理解这将只适用于postgres,即如果我明天将数据库更改为mysql,则hibernate将抛出错误.

因此,我的问题是如何一般地这样做,即告诉hibernate创建一个应包括时区和偏移量的列.我认为,由于故意创建java类型"​​ZonedDateTime"以包括时区和UTC时间偏移,因此hibernate默认会创建一个包含时区的列.因此问题再次出现:告诉hibernate包含时区和偏移的正确方法是什么.

这是我的pom的一部分:

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.0.RELEASE</version>

    <hibernate.version>5.0.4.Final</hibernate.version>

    <dependency> …
Run Code Online (Sandbox Code Playgroud)

postgresql hibernate java-8 hibernate-5.x

12
推荐指数
1
解决办法
3270
查看次数

标签 统计

hibernate ×1

hibernate-5.x ×1

java-8 ×1

postgresql ×1