看起來你似乎試圖追蹤條目的添加順序?
一個潛在的解決方案,這樣做會使用像這樣的@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列表中的正確位置。
請嘗試一下,看看有什麼不工作。 – icedwater
用account_id和last_order保留一張表,表示LAST_ORDER。在每個訂單上,您必須更新/保存2個表格。嘗試一下你的最後,讓我們看看哪些工作沒有成功。 – CHowdappaM