Java Hibernate:如何维护插入顺序

Java Hibernate:如何维护插入顺序,java,hibernate,orm,Java,Hibernate,Orm,我有一个实体列表,其中创建顺序很重要,但它们不包含用于排序的时间戳。实体在创建时会添加到列表的末尾,以便在列表中正确排序 使用Hibernate持久化列表后,实体将按照创建顺序显示在数据库表中。但是,当使用新的Hibernate会话检索列表时,列表现在的插入/创建顺序相反 这是预期的行为吗?是否有任何方法可以按照列表在表中的显示顺序检索列表 主键是UUID,实体列表应该始终在相同的IP地址和JVM上创建。这意味着按UUID排序是可能的,但我不想做假设 另一种可能性是,如果列表保证总是以相反的顺序

我有一个实体列表,其中创建顺序很重要,但它们不包含用于排序的时间戳。实体在创建时会添加到列表的末尾,以便在列表中正确排序

使用Hibernate持久化列表后,实体将按照创建顺序显示在数据库表中。但是,当使用新的Hibernate会话检索列表时,列表现在的插入/创建顺序相反

这是预期的行为吗?是否有任何方法可以按照列表在表中的显示顺序检索列表

主键是UUID,实体列表应该始终在相同的IP地址和JVM上创建。这意味着按UUID排序是可能的,但我不想做假设


另一种可能性是,如果列表保证总是以相反的顺序出现,我可以一直向后处理它。

您必须将列表作为一个整体进行保存 . 这样,您将有一个额外的列来保存元素的顺序

诸如bags和set之类的类型将完成作业,但将丢失元素的顺序。

JPA(hibernate实现)具有:

@OneToMany
@OrderBy(“uuidColumn”)
私人名单;

我已经在使用一个列表,但听起来我需要向数据库中添加一个索引列以使其正常工作(我正在使用注释来定义实体)。理想情况下,我希望避免对数据库结构进行任何更改,有什么方法可以这样做吗?您尝试过@OrderColumn注释吗?在“索引集合”部分下?如果这项工作让我知道,那么我可以更新我的答案:)耶,我很幸运。旋转它的值确实会改变后续水合作用的收集顺序。我最终这样做,并依赖于Hibernate生成UUID这一事实,UUID可以按创建时间排序,只要它们是在相同IP地址的同一JVM上创建的。
@OneToMany
@OrderBy("uuidColumn")
private List<Something> list;