您似乎正在尝试跟踪添加条目的顺序?
一种可能的解决方案是使用 @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
}
这将为您的帐户生成一个表格,其中包含如下订单:
**ORDERLINE**
ol_id a_id idx
65473 67890 0
76843 67890 1
103473 67890 2
12563 12345 0
每当您从列表中删除一个项目并保留时,它应该更新 idx 列。无论出于何种原因,如果您最终在 idx 值中出现间隙,它将构建一个列表,其中包含 NULL 条目的间隙所在的位置。请注意,这是从 0 开始的编号,因为它会尝试将结果输入回 java List 中的正确位置。