Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每个帐户的Hibernate/JPA增量列_Java_Hibernate_Jpa_Identifier - Fatal编程技术网

Java 每个帐户的Hibernate/JPA增量列

Java 每个帐户的Hibernate/JPA增量列,java,hibernate,jpa,identifier,Java,Hibernate,Jpa,Identifier,我正在使用hibernate,我想知道是否有一种好方法可以生成依赖于另一列的增量值。例如,取决于帐户id的订单号: id **orderNumber** account_id 1 1 1 2 2 1 3 1 2 4 2 2 我想要类似于tablegenerator的东西,但要使用pkcolumnValue来保存动态值(account\u id),而不是固定的实体名称 提前感谢。您似乎在跟踪条

我正在使用hibernate,我想知道是否有一种好方法可以生成依赖于另一列的增量值。例如,取决于帐户id的订单号:

id **orderNumber** account_id

1   1           1

2   2           1

3   1           2

4   2           2
我想要类似于
tablegenerator
的东西,但要使用
pkcolumnValue
来保存动态值(account\u id),而不是固定的实体名称


提前感谢。

您似乎在跟踪条目添加的顺序

一个可能的解决方案是使用@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值中出现间隙,它将为间隙所在的位置构建一个包含空条目的列表。请注意,这是基于0的编号,因为它将尝试将结果输入到java列表中的正确位置。

请尝试一些方法,看看有什么不起作用。保留一个表,用帐户id和最后一个订单显示最后一个订单。在每个订单上,您必须更新/保存2个表。在你这边试试,看看有什么不起作用。