使用休眠 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
我想将 a @Formula
(包含上述 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
,希望使用in创建一个DateOptions
对象。ResultSet
nullSafeGet(...)
我在我的DateOptionsUserType
public int[] sqlTypes() {
return new int[] {Types.VARCHAR, Types.DATE};
}
我在启动时不断收到以下异常:(
org.hibernate.MappingException: property mapping has wrong number of columns: mypackage.MyEnity.dateOptions type: mypackage.DateOptionsUserType
我也尝试CompositeUserType
过相同的结果)。
知道可能导致问题的原因吗?是否有可能(将 a 映射@Formula
到自定义非实体对象)?