2010-05-20 41 views
1

請考慮下面的表(使用對應的實體創建)JPA @version - 它可以被用來calcualate一個表項的版本

request 
------- 
id requestor type version items 
1 a   t1 1  5 
2 a   t1 2  3 
3 b   t1 1  2 
4 a   t2 1  4 
5 a   t1 3  9 

以上是我想達到的目標。版本字段是其他用戶提供的計算字段。 基本上請求的版本需要根據請求者和類型的組合來計算的。具有給定組合的第一次出現將具有版本1,然後是版本2,等等。

我嘗試過各種東西上使用不同的實體只有三列@version和連接使用多對一等兩個實體,但我沒能得到期望的結果。我不想把你和我試過的東西混淆。

由於目標很簡單應該有一個更簡單的方法,我想? 能否請你幫忙嗎? - 任何幫助非常感謝!

在此先感謝

回答

0

Version批註用於指定作爲其樂觀鎖值的實體類的版本字段或屬性。我不認爲這與你要找的東西有什麼關係。這裏有一些想法,但:

  1. 插入使用觸發器。
  2. 使用SQL視圖。
  3. 使用供應商特定的擴展,如Hibernate的@Formula(這個註解,來讓你的屬性映射到SQL表達式,而不是一個表列)派生屬性。

爲了說明最新的選項,你可以聲明是這樣的:

@Formula("(select count(r.id)+1 from Request r where r.requestor=requestor and r.type=type and r.id<id)") 
public long getVersion() { return version; } 
相關問題