这可能非常容易,但我在JPA规范中找不到任何明确的声明。如果我没有List
注释的基于@OrderBy
的关系,例如:
@OneToMany
List<Child> children;
那么Java中这个列表元素的顺序是什么?这似乎是合理的,这将是Child
表中的相应记录或中间表中的条目的顺序,如果它是多对多的,但是JPA提供者的保证行为是什么?
答案 0 :(得分:2)
据我所知,规范并不保证订单。如果您依赖订单,@OrderBy就是您的选择。
编辑:引用JPA 1.0规范:
除非使用OrderBy构造并且对列表的修改遵循指定的顺序,否则便携式应用程序不应期望跨持久性上下文维护列表的顺序。订单不是持久的。
(第19页,脚注[4])
答案 1 :(得分:2)
此外,当您的实体没有子节点时,JPA规范不会指定它是否应返回空列表,或者在您检索List时指定null,因此请务必检查它以避免使用nullpointerexceptions。
答案 2 :(得分:1)
没有保证的行为,订单每次都可能不同。它发生在我的休眠状态:当我刷新页面时,顺序发生了变化。
答案 3 :(得分:0)
您可以在搜索时订购搜索结果,而不是在类及其属性的定义中。