列表关系中的项顺序


这可能

非常简单,但我在 JPA 规范中找不到任何关于它的明确声明。如果我有一个没有@OrderBy注释的基于List的关系,例如:

@OneToMany
List<Child> children;

那么这个列表元素在 Java 中的顺序是什么?如果是多对多,这将是表中相应记录的顺序或间歇表中的条目Child这似乎是合理的,但这是否是 JPA 提供程序的保证行为?

据我所知,规范不能保证订单。 如果您依赖订单,@OrderBy是要走的路。

编辑:引用JPA 1.0规范:

可移植应用程序不应期望跨持久性上下文维护列表的顺序,除非使用 OrderBy 构造并且对列表的修改遵循指定的顺序。否则,顺序不是永久性的。

(第19页,脚注[4])

此外,当您的实体没有子项时,JPA 规范不会指定在检索列表时它是否应返回空列表或 null,因此请务必检查它以避免空指针异常。

没有保证的行为,每次的顺序可能不同。它发生在我休眠上:当我刷新页面时顺序发生了变化。

您可以在

搜索时对搜索结果进行排序,而不是在类及其属性的定义中排序。

最新更新