Sym*_* Kt 3 java hibernate hibernate-criteria
你能帮我解决这个问题吗?我正在尝试按日期对条件查询的结果进行排序,但没有得到我需要的结果。我以字符串格式保存日期,如何使用条件按日期排序
我正在使用的代码是:
@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;
}
Run Code Online (Sandbox Code Playgroud)
结果是:
01/02/2009
03/01/2009
04/06/2009
05/03/2009
06/12/2008
07/02/2009
Run Code Online (Sandbox Code Playgroud)
结果应该是:
06/12/2008
03/01/2009
01/02/2009
07/02/2009
Run Code Online (Sandbox Code Playgroud)
我需要以上述格式选择日期。
非常感谢您的帮助。
您必须criteria.addOrder(Order.asc("createdDate"));在list根据条件执行方法之前调用。
@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;
}
Run Code Online (Sandbox Code Playgroud)
编辑
在你的情况下,如果你想按字符串日期排序,正如我在评论中提到的,这个答案不是你能得到的正确答案(可能将 creationDate 转换为 Date 类型是最好的!当然)。
您可以尝试一些代码,例如:
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;
}
Run Code Online (Sandbox Code Playgroud)
编辑 2
如果您想避免使用 lambdas,请尝试使用它:
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);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8849 次 |
| 最近记录: |