gpt4 book ai didi

java - hibernate :@OrderBy

转载 作者:行者123 更新时间:2023-12-01 17:30:56 35 4
gpt4 key购买 nike

我必须按日期对子实体列表进行排序。现在我正在这样做:

@OrderBy(clause = "arrivalDate ASC, arrivalTime ASC, departureDate ASC, departureTime ASC")

其中arrivalDate和departmentDate包含日期,arrivalTime和departmentTime包含时间,但它们都是DATE类型。

一切都很好,直到我添加一个新项目到列表中 - 它总是出现在列表的末尾。我该如何解决?谢谢

最佳答案

OrderBy 子句仅在 Hibernate 从数据库中选择实体时使用。一旦列表进入内存,它就可以像 Java 中的任何其他列表一样工作。如果向列表中添加某些内容,List.add() 方法的工作方式就像其 javadoc 中所记录的那样,并且该元素将添加到列表的末尾。

如果您希望将新项目插入到列表中适当的索引处,则必须自己找到该索引,或者将其添加到列表中并使用比较器对列表进行排序,该比较器根据以下内容对项目进行排序他们的到达日期、到达时间等。

当然,请注意,如果您更改列表中已存在的项目中的其中一个字段,则列表将不再具有正确的顺序。

也许您应该完全避免使用 @OrderBy 注释,而只需在实体中添加一个 getSortedItems() 方法,该方法将返回项目列表的排序副本。

关于java - hibernate :@OrderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046176/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com