这可能非常简单,但我在 JPA 规范中找不到任何明确的说明。如果我有一个没有注释的List
基于关系的关系,例如:@OrderBy
@OneToMany
List<Child> children;
那么这个列表元素在 Java 中的顺序是什么?Child
如果它是多对多的,这将是表中相应记录或中间表中条目的顺序似乎是合理的,但这是 JPA 提供者的保证行为吗?
此外,当您的实体没有子实体时,JPA 规范没有指定在您检索列表时它是否应返回空列表或 null,因此请务必检查它以避免空指针异常。
据我所知,规范不保证订单。如果您依赖订单,@OrderBy是要走的路。
编辑:引用 JPA 1.0 规范:
可移植应用程序不应期望在持久性上下文中维护列表的顺序,除非使用 OrderBy 构造并且对列表的修改遵循指定的顺序。该命令不是持久的。
(第 19 页,脚注 [4])
没有保证的行为,每次的顺序可能不同。休眠时发生在我身上:刷新页面时顺序发生了变化。
您可以在搜索时对搜索结果进行排序,而不是在类及其属性的定义中。