Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠:@OrderBy_Java_Hibernate - Fatal编程技术网

Java 休眠:@OrderBy

Java 休眠:@OrderBy,java,hibernate,Java,Hibernate,我必须按日期排列子实体列表。 现在我这样做: @OrderBy(clause = "arrivalDate ASC, arrivalTime ASC, departureDate ASC, departureTime ASC") 其中arrivalDate和DetaureDate包含日期,arrivalTime和DetaureTime包含时间,但它们都是日期类型 一切正常,直到我添加一个新项目到列表-它总是出现在列表的末尾。 我怎样才能解决它? 谢谢OrderBy子句仅在休眠数据库中选定的实体

我必须按日期排列子实体列表。 现在我这样做:

@OrderBy(clause = "arrivalDate ASC, arrivalTime ASC, departureDate ASC, departureTime ASC")
其中arrivalDate和DetaureDate包含日期,arrivalTime和DetaureTime包含时间,但它们都是日期类型

一切正常,直到我添加一个新项目到列表-它总是出现在列表的末尾。 我怎样才能解决它?
谢谢

OrderBy子句仅在休眠数据库中选定的实体时使用。一旦列表进入内存,它将与Java中的任何其他列表一样工作。如果您向列表中添加了一些内容,那么
list.add()
方法的工作方式就像在其javadoc中记录的一样,并且元素被添加到列表的末尾

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

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


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

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

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

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


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

另一个选项是使用@org.hibernate.annotations.Sort,它使用您提供的比较器设置SortedSet/SortedMap。另一个选项是使用@org.hibernate.annotations.Sort,它使用您提供的比较器设置SortedSet/SortedMap。