您好,我正在使用 hibernate 查询并尝试按 id 排序结果,但 getResultList 函数始终按升序返回结果,即使我的查询具有 deviceActivityLogId 的 order by 子句。
这是我的功能
public List<DeviceActivityLog> getActivityLogForSysActivityId(int userDeviceRelId,int sysActivityId, int parentId, boolean deleteFlag) {
String query = "select d from DeviceActivityLog d WHERE d.userDeviceRelId = :userDeviceRelId and d.deleteFlag = :deleteFlag";
if (sysActivityId > 0) {
query += " and d.sysActivityId = :sysActivityId";
}
if (parentId >= 0) {
query += " and d.isParent =:parentId";
}
TypedQuery<DeviceActivityLog> deviceQuery = entityManager.createQuery(query, DeviceActivityLog.class);
deviceQuery.setParameter("userDeviceRelId", new UserDeviceRel(userDeviceRelId));
deviceQuery.setParameter("deleteFlag", deleteFlag);
if (sysActivityId > 0) {
deviceQuery.setParameter("sysActivityId", new SysActivity(sysActivityId));
}
if (parentId >= 0) {
deviceQuery.setParameter("parentId", parentId);
}
query+=" order by d.deviceActivityLogId desc";
System.out.println("QUERY: "+query);
return deviceQuery.getResultList();
}
任何人都可以提供如何按降序排列结果列表的灵魂吗?
最佳答案
在根据查询变量的上一个值创建 TypedQuery 对象后,您将向查询字符串变量分配一个新值。
这基本上相当于
String message = "Hello";
System.out.println(message);
message += " World";
这显然会打印 Hello,而不是 Hello World。
如果代码是,它将打印 Hello World
String message = "Hello";
message += " World";
System.out.println(message);
关于Java hibernate 查询中 order by 子句的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355822/