【发布时间】:2016-01-15 21:24:37
【问题描述】:
我有一个连接到 PostgreSQL 的 Grails 2.5.3 应用程序,我想在数据库中存储一个 java Date 或 Calendar 对象,并包含时区。
基于PostgreSQL Documentation,默认时间戳类型不包含时区,所以需要使用timestamptz类型来包含时区。
不幸的是,当我尝试在域类的 mapping 闭包中进行设置时,它失败了。我正在尝试使用它:
createdDate type: 'timestamptz'
我收到的错误是:
nested exception is org.hibernate.MappingException: Could not determine type for: timestamptz
不幸的是,Hibernate types 列表似乎不包含任何可以映射此值的内容。与日期相关的有:date、time、timestamp、calendar、calendar-date。我已经测试了每一个,它们都没有在 Postgres 中创建所需的timestamp with time zone。
有些文章谈论为此创建自定义 Hibernate UserType,但这似乎是一个相当常见的用例,我不禁想到有什么东西可以让我让它工作开箱即用。
【问题讨论】:
-
您可以将时间戳和时区存储为两个单独的属性/列。
标签: hibernate postgresql grails grails-orm grails-2.0