Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中表示Oracle区间_Java_Database_Oracle_Hibernate_Jpa - Fatal编程技术网

如何在Java中表示Oracle区间

如何在Java中表示Oracle区间,java,database,oracle,hibernate,jpa,Java,Database,Oracle,Hibernate,Jpa,我正在使用Java7和Hibernate4 希望使用oracle Interval数据类型()表示特定天数的间隔 想知道使用什么Java类型来映射这个Oracle Interval对象 我希望使用标准Java对象,而不是本文档中提到的任何oracle.sql.*对象 这是我正在玩的桌子: 编辑 从那以后我就试过了 @Temporal(TemporalType.TIME) private java.util.Date deliveryPeriod; 获取错误: Caused by: java

我正在使用Java7和Hibernate4

希望使用oracle Interval数据类型()表示特定天数的间隔

想知道使用什么Java类型来映射这个Oracle Interval对象

我希望使用标准Java对象,而不是本文档中提到的任何oracle.sql.*对象

这是我正在玩的桌子:



编辑

从那以后我就试过了

@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

我知道将它映射到Java字符串是可行的,但我希望它是某种日期对象,所以我不必自己解析它


我还希望避免使用oracle特定的数据类型,如oracle.sql.interval

如果映射到字符串有效,那么您可以

  • (JPA 2.1)写入转换器,或
  • (JPA<2.1)编写一个Hibernate用户类型
  • 将字符串转换为间隔类

    您可以自己为Interval编写POJO,也可以利用JODA Time的
    持续时间

    检查以下内容:

  • 您可以定义一个Interval Hibernate用户类型
  • 然后您的实体将只使用整数:

    @TypeDef(name="interval", typeClass = Interval.class)
    
    @Type(type = "interval")    
    private Integer interval;
    
  • 内部用户类型是Java整数到SQL间隔适配器


  • 查看JPA Specification 2.0(JSR317)并搜索任何关于一般数据类型的章节。恐怕你在那里找不到太多。JPA只支持数字、字符串和日期。它们甚至不支持任何集合或XMLs数据类型,只支持标量。也许你得等一等。3.0. JPA必须覆盖所有数据库中的“最大公约数”。Oracle的所有特殊功能都被视为“非法”,因为这将破坏供应商的独立性。
    @TypeDef(name="interval", typeClass = Interval.class)
    
    @Type(type = "interval")    
    private Integer interval;