您好我正在使用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();
}
任何人都可以提供如何按降序获取结果列表的灵魂吗?
答案 0 :(得分:1)
您在查询字符串变量之后为查询变量的PREVIOUS值创建TypedQuery对象后,为查询分配新值。
这基本上等同于
*** Terminating app due to uncaught exception 'RLMException', reason: 'Invalid property name'
显然会打印Hello,而不是Hello World。
如果代码是
,它会打印Hello WorldString message = "Hello";
System.out.println(message);
message += " World";
答案 1 :(得分:0)
在构建查询对象后更改查询字符串。
发表你的陈述
String message = "Hello";
message += " World";
System.out.println(message);
在最后(就在 TypedQuery<DeviceActivityLog> deviceQuery = entityManager.createQuery(query, DeviceActivityLog.class);
之前),你应该没事。