2010-10-01 74 views
3

我正在嘗試學習JPA。我創建了一個簡單的實體類。該實體有3列:ID,NAME,NUMBER_A。它工作正常:我可以堅持,更新和刪除沒有問題。JPA/EclipseLink - 計算列

我想要做的是創建一個計算/計算列。我想檢索NUMBER_A,用它來計算一個新值並設置計算列(比方說CALC_COLUMN)。

此計算列不會被保留。它僅在運行時才需要。

我試圖創建一個簡單的雙對象,它是getter和setter,但是當我運行應用程序時,它會拋出一個錯誤,告訴列CALC_COLUMN不存在,因爲JPA/EclipseLink試圖將其用作有效的數據庫列(列'CALC_COLUMN'或者不在FROM列表中的任何表中...)。

那麼,有可能嗎?

TIA,鮑勃

回答

2

我試圖做的是創建一個計算/計算列。

JPA不爲此提供標準支持。有些提供商具有特定的擴展,如Hibernate的@Formula,但EclipseLink沒有direct equivalent(儘管它提供了替代方法,請參閱鏈接的答案)。

此計算列不會被保留。它僅在運行時才需要。

那你爲什麼要談論專欄? :)

我試圖創建一個簡單的雙對象和它的getter和setter,但是當我運行應用程序,它拋出一個錯誤,告訴柱CALC_COLUMN不存在,因爲JPA/EclipseLink的嘗試使用它作爲有效的數據庫列(列'CALC_COLUMN'或者不在FROM列表中的任何表中...)。

從你的描述中,我不確定你需要什麼比一個額外的getter(沒有任何字段)更花哨,會返回計算值。如果需要,請將其設爲@Transient。但也許這只是一個例子。在這種情況下,檢查提到的鏈接(和Request for Enhancement)。