我正在使用 Java 7 和 hibernate 4。
想用oracle的Interval数据类型(http://psoug.org/definition/INTERVAL.htm)来表示一定天数的间隔。
想知道使用什么 Java 类型来映射这个 Oracle Interval 对象。
我想使用标准 Java 对象,而不是本文档中提到的任何 oracle.sql.* 对象 http://docs.oracle.com/cd/B28359_01/java.111/b31224/datacc.htm .
这是我正在玩的 table :
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 String 是可行的,但我想得到它是某种日期对象,这样我就不必自己解析它了。
http://objectmix.com/jdbc-java/41781-oracle10g-oracle-sql-interval-type.html
我还想避免使用 oracle 特定的数据类型,例如 oracle.sql.INTERVALS
最佳答案
检查这个 SO answer :
- 您可以定义一个 Interval Hibernate UserType
然后您的实体将简单地使用整数:
@TypeDef(name="interval", typeClass = Interval.class) @Type(type = "interval") private Integer interval;
Internal UserType 是 Java Integer 到 SQL INTERVAL 适配器。
关于java - 如何在 Java 中表示 Oracle Interval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236798/