【发布时间】:2014-08-11 06:08:44
【问题描述】:
我正在使用 Java 7 和休眠 4。
想用oracle的Interval数据类型(http://psoug.org/definition/INTERVAL.htm)来表示一定天数的区间。
想知道使用什么 Java 类型来映射这个 Oracle 间隔对象。
我想使用标准 Java 对象,而不是本文档 http://docs.oracle.com/cd/B28359_01/java.111/b31224/datacc.htm 中提到的任何 oracle.sql.* 对象。
这是我正在玩的桌子:
CREATE TABLE "MyTest" (
"ID" NUMBER(14,0) NOT NULL
"DELIVERY_PERIOD" INTERVAL DAY (3) TO SECOND (6),
CONSTRAINT "MYTEST_PK" PRIMARY KEY ("ID"));
编辑
我已经尝试过
@Temporal(TemporalType.TIME)
private java.util.Date deliveryPeriod;
得到错误:
Caused by: java.sql.SQLException: Invalid column type: getTime not implemented for class oracle.jdbc.driver.T4CIntervaldsAccessor
编辑 2
http://docs.oracle.com/cd/B12037_01/java.101/b10983/datamap.htm
我知道将它映射到 Java 字符串会起作用,但我希望它是某种日期对象,所以我不必自己解析它。
http://objectmix.com/jdbc-java/41781-oracle10g-oracle-sql-interval-type.html
我也想避免使用 oracle 特定的数据类型,例如 oracle.sql.INTERVALS
【问题讨论】:
-
查看 JPA 规范 2.0 (JSR 317) 并搜索有关一般数据类型的任何部分。恐怕你不会在那里找到太多。 JPA 仅支持数字、字符串和日期。它们甚至不支持任何集合或 XML 数据类型,仅支持标量。也许你必须等待版本。 3.0。 JPA 必须涵盖所有数据库的“最大公约数”。 Oracle 的所有特殊功能都被认为是“非法的”,因为它会破坏供应商的独立性。
标签: java database oracle hibernate jpa