使用Hibernate 3.5.3:休眠用戶類型映射@Formula導致非實體的自定義對象
在數據庫是一個函數(即使用Oracle的流水線表函數)供給時,它返回一個數量的行和值的實體的ID。 (此功能是遺留代碼的一部分,不能更改)。
結果例子:
select * from table(DateOptions_Function('ID_OF_ENTITY'));
OPTION DATE
-----------------------
startDate 2012/09/01
endDate 2013/04/01
otherDate 2011/01/01
我要映射@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;
}
我曾嘗試與創建使用ResultSet
在nullSafeGet(...)
一個DateOptions
對象的創建希望一個Hibernate UserType
。
我在DateOptionsUserType
public int[] sqlTypes() {
return new int[] {Types.VARCHAR, Types.DATE};
}
指定SQL類型我不斷收到以下異常啓動時,雖然: org.hibernate.MappingException: property mapping has wrong number of columns: mypackage.MyEnity.dateOptions type: mypackage.DateOptionsUserType
(我也曾嘗試CompositeUserType
具有相同的結果)。
任何想法可能會導致這個問題?它甚至可能(將@Formula
映射到自定義非實體對象)?