我正在使用Java 7和hibernate 4。
想要使用oracle Interval数据类型(http://psoug.org/definition/INTERVAL.htm)来表示特定天数的间隔。
想知道用于映射此Oracle Interval对象的Java Type。
我想使用标准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 String会起作用,但是我想得到它是某种日期对象所以我不必自己解析它。
http://objectmix.com/jdbc-java/41781-oracle10g-oracle-sql-interval-type.html
我还想避免使用oracle特定的数据类型,例如oracle.sql.INTERVALS
答案 0 :(得分:4)
检查SO answer:
然后您的实体将只使用整数:
@TypeDef(name="interval", typeClass = Interval.class)
@Type(type = "interval")
private Integer interval;
Internal UserType是SQL INTERVAL适配器的Java Integer。
答案 1 :(得分:1)
如果映射到String,则可以
将String转换为Interval类。
你可以自己为Interval写一个POJO,或者使用JODA Time Duration