3

我正在使用休眠,我想知道是否有一种好方法可以生成依赖于另一列的增量值。例如orderNumber that depends on account_id

id **orderNumber** account_id

1   1           1

2   2           1

3   1           2

4   2           2

我想要类似TABLE generatorpkcolumnValue持有动态值(account_id)而不是固定实体名称的东西。

提前致谢。

4

1 回答 1

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
}

这将为您的帐户生成一个表格,其中包含如下订单:

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

每当您从列表中删除一个项目并保留时,它应该更新 idx 列。无论出于何种原因,如果您最终在 idx 值中出现间隙,它将构建一个列表,其中包含 NULL 条目的间隙所在的位置。请注意,这是从 0 开始的编号,因为它会尝试将结果输入回 java List 中的正确位置。

于 2014-09-26T09:52:08.317 回答