在標準上執行list
方法之前,您必須撥打criteria.addOrder(Order.asc("createdDate"));
。
@Override
public List<Program> getListProgram() {
Session session=sessionFactory.openSession();
Criteria criteria=session.createCriteria(Program.class);
criteria.addOrder(Order.asc("createdDate"));
List<Program> programs=(List<Program>)criteria.list();
return programs;
}
編輯
在你的情況,如果你想通過字符串日期排序,正如我在評論mentionned,這個答案是不正確的,你可以得到(可旋轉creationDate到日期類型是最好的!當然)。
你可以嘗試像一些代碼:
static final String DF = "DD/MM/YYYY";
static final SimpleDateFormat SDF = new SimpleDateFormat(DF);
@Override
public List<Program> getListProgram() {
Session session=sessionFactory.openSession();
Criteria criteria=session.createCriteria(Program.class);
List<Program> =(List<Program>)criteria.list();
boolean asc = true;
programs.sort((a, b) -> {
int comparison = 0;
try {
comparison = SDF.parse(a.getCreatedDate()).compareTo(SDF.parse(b.getCreatedDate()));
} catch (ParseException e) {
// handle it!!
}
return asc ? comparison : (0-comparison);
});
return programs;
}
EDIT 2
如果你想避免使用lambda表達式,請嘗試使用這個:
Collections.sort(programs, new Comparator<Main>() {
@Override
public int compare(Program a, Program b) {
int comparison = 0;
try {
comparison = SDF.parse(a.getCreatedDate()).compareTo(SDF.parse(b.getCreatedDate()));
} catch (ParseException e) {
// handle it!!
}
return asc ? comparison : (0-comparison);
}
});
爲什麼你在字符串中使用的日期,而不是一個適當的日期類型列? – Tom
@Tom它發生意外我怎麼排序.Pleas幫助我湯姆? –