我正在使用 java 实现网络服务。 在这个实现中有以下步骤
1) 使用 hibernate 获取值到数据库中。
2) 获取存储在类 bean 列表类型中的值
List<IdentityDocArchive> resultList = q.getResultList();
3) 然后我对最后更新日期进行排序
Collections.sort(identityDocList, new Comparator<IdentityDocArchive>() {
DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
@Override
public int compare(IdentityDocArchive o1, IdentityDocArchive o2) {
try {
return f.parse(o2.getLastUpdtDt().toString()).compareTo(f.parse(o1.getLastUpdtDt().toString()));
} catch (ParseException e) {
LOGGER.warning("Failed To Parsing string to date ".concat(e.getMessage()));
throw new IllegalArgumentException(e);
}
}
});
4) 现在这个列表值存储到另一个列表中
我的问题是,如果不是更好的方法,那是正确的实现方法。
最佳答案
您使用 Hibernate,因此您还应该使用 hibernate/JPA 来对数据进行排序。通过 named query order by ...
或通过 CriteriaQuery.orderBy(...)
.
您可能还想查看 Java EE persistence tutorial为此。
您也可以使用Collections.sort
对其进行手动 排序,但这样您就完成了数据库的预期工作。 (免责声明:您当然应该相应地设置您的数据库:索引等)
关于java - java中的比较器和可比较的负面场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41958261/