Java hibernate查询问题与order by子句

时间:2015-07-11 09:50:11

标签: java mysql hibernate

您好我正在使用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();
   }

任何人都可以提供如何按降序获取结果列表的灵魂吗?

2 个答案:

答案 0 :(得分:1)

您在查询字符串变量之后为查询变量的PREVIOUS值创建TypedQuery对象后,为查询分配新值。

这基本上等同于

*** Terminating app due to uncaught exception 'RLMException', reason: 'Invalid property name'

显然会打印Hello,而不是Hello World。

如果代码是

,它会打印Hello World
String 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); 之前),你应该没事。