我收到List<MyDto> dtos
和14 MyDto
,并尝试将其保存到数据库。
我收到List<MyDto>
循环dtos
并在每个步骤上
2.1->将MyDto
映射到MyEntity
2.2)->保存MyEntity
并将其刷新到DB
我希望数据库中有14行,按我保存的顺序保存。例如:
row0
row1
row2
row3
row4
row5
row6
row7
row8
row9
row10
row11
row12
row13
它在使用PostgreSQL和Oracle的所有应用程序实例上都能正常工作。
但是在一个与Oracle兼容的实例上,我有奇怪的行为。有时,顺序被破坏了。我不明白为什么?所有行都保存有偏移量。
如果我保存上面的示例,我会得到:
row4
row5
row6
row7
row8
row9
row10
row11
row12
row13
row0
row1
row2
row3
我认为ArrayList
中的问题。它有DEFAULT_CAPACITY = 10
,如果我添加14个项目-它会更改CAPACITY
并重新排序项目。但是我不明白下一个:
答案 0 :(得分:0)
这可能是由于Oracle用于操作的线程池。尝试在插入内容之间添加一个停顿,看看是否是您遇到的问题。
作为长期解决方案,如果您打算扩展规模,则可能不希望直接依赖插入顺序来进行记录排序。您可能应该使用序列ID或对象创建日期或其他方式在select上对记录进行排序。
答案 1 :(得分:0)
您可以使用JPA中的 @OrderBy 批注(在要排序的属性顶部)来按所需顺序获取列表。
有关更多信息,请检查此链接jpa/OrderBy