Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 Hibernate UserType将@Formula结果映射到非实体自定义对象_Java_Oracle_Hibernate_Hibernate Mapping - Fatal编程技术网

Java Hibernate UserType将@Formula结果映射到非实体自定义对象

Java Hibernate UserType将@Formula结果映射到非实体自定义对象,java,oracle,hibernate,hibernate-mapping,Java,Oracle,Hibernate,Hibernate Mapping,使用Hibernate 3.5.3: 数据库中有一个函数(使用Oracle的管道表函数),在提供实体ID时,该函数返回许多行和值。(此函数是无法更改的旧代码的一部分) 结果示例: select * from table(DateOptions_Function('ID_OF_ENTITY')); OPTION DATE ----------------------- startDate 2012/09/01 endDate 2013/04/01

使用Hibernate 3.5.3:

数据库中有一个函数(使用Oracle的管道表函数),在提供实体ID时,该函数返回许多行和值。(此函数是无法更改的旧代码的一部分)

结果示例:

select * from table(DateOptions_Function('ID_OF_ENTITY'));

OPTION       DATE       
-----------------------
startDate    2012/09/01    
endDate      2013/04/01
otherDate    2011/01/01 
我想将
@公式(包含上述SQL)的结果映射到实体上的对象

 public class DateOptions {
     private LocalDate startDate;
     private LocalDate endDate;
     private LocalDate otherDate;

     // getters and setters omitted
 }
我想在实体中这样映射它:

@Formula("(select * from table(DateOptions_Function(ENTITY_ID)))")
@Type(type = "mypackage.DateOptionsUserType")
public DateOptions getDateOptions() {
    return dateOptions;
}
我曾尝试创建一个Hibernate
UserType
,希望使用
nullSafeGet(…)
中的
ResultSet
创建一个
DateOptions
对象

我在my
DateOptions用户类型中指定sql类型

public int[] sqlTypes() {
    return new int[] {Types.VARCHAR, Types.DATE}; 
}
不过,我在启动时一直遇到以下异常:
org.hibernate.MappingException:属性映射的列数错误:mypackage.MyEnity.dateOptions类型:mypackage.dateOptions用户类型
(我也尝试了
CompositeUserType
,结果相同)


知道是什么导致了这个问题吗?甚至有可能(将
@Formula
映射到自定义非实体对象)吗?

因为基本上有3个带公式的字段,我会看看执行函数3次是否足够快

@Formula("(select DATE from table(DateOptions_Function(ENTITY_ID))) WHERE option='startDate'")
private LocalDate startDate;

@Formula("(select DATE from table(DateOptions_Function(ENTITY_ID))) WHERE option='endDate'")
private LocalDate endDate;

@Formula("(select DATE from table(DateOptions_Function(ENTITY_ID))) WHERE option='otherDate'")
private LocalDate otherDate;