2013-11-15 98 views
3

我正在使用休眠,我想知道是否有一種很好的方法來生成依賴於另一列的增量值。例如,orderNumber that depends on account_id每個帳戶休眠/ JPA增量列

id **orderNumber** account_id 

1 1   1 

2 2   1 

3 1   2 

4 2   2 

我想是這樣TABLE generatorpkcolumnValue拿着一個動態值,而非固定的實體名稱(ACCOUNT_ID)。

在此先感謝。

+0

請嘗試一下,看看有什麼不工作。 – icedwater

+1

用account_id和last_order保留一張表,表示LAST_ORDER。在每個訂單上,您必須更新/保存2個表格。嘗試一下你的最後,讓我們看看哪些工作沒有成功。 – CHowdappaM

回答

1

看起來你似乎試圖追蹤條目的添加順序?

一個潛在的解決方案,這樣做會使用像這樣的@OrderColumn映射你的實體:

@Entity 
@Table(name="ACCOUNT") 
public class Account { 
    @Id @GeneratedValue @Column(name="a_id") private long id; 

    @OneToMany 
    @OrderColumn(name="idx") 
    private List<OrderLine> orderLines; 

    // other stuff 
} 

@Entity 
@Table(name="ORDERLINE") 
public class OrderLine { 
    @Id @GeneratedValue @Column(name="ol_id") private long id; 

    // other stuff 
} 

這將導致你的賬戶表,並含有一個orderlines這樣的:

**ORDERLINE** 
ol_id a_id  idx 
65473 67890 0 
76843 67890 1 
103473 67890 2 
12563 12345 0 

每當您從列表中刪除一個項目並堅持時,它應該更新idx列。無論出於何種原因,如果你最終在idx值中存在差距,那麼它將構造一個帶有NULL條目的列表,以表示差距在哪裏。請注意,這是基於0的編號,因爲它會嘗試將結果輸入到java列表中的正確位置。