我有这样的查询:
@Query(value = "SELECT new com.domain.ActivityStatistic( " +
"adm.id, " +
"adm.fullName, " +
"COUNT(CASE WHEN (act.action = 'APPROVE') THEN act.action END) AS approved, " +
"max(act.actionTime) AS lastActionTime) " +
"FROM Actions act, Admins adm LEFT JOIN adm.group gr " +
"WHERE adm.id = act.adminId AND act.actionTime BETWEEN ?1 AND ?2 AND gr.id = ?3 " +
"GROUP BY adm.id")
Page<ActivityStatistic> getActivityStatistics(LocalDateTime from,
LocalDateTime to,
long groupId,
Pageable pageable);
如何按我创建的新字段(lastActionTime,已批准)对它进行排序? 我可以在postgresql:pgadmin中通过本机sql运行它。但是在jpa中,当我批准使用带有字段名称的sort时,它会自动成为act.approved在JPA查询中。
我以前读过这篇文章Spring Data and how to sort by a column not in an Entity,但没有帮助。
答案 0 :(得分:1)
您不能在未映射到实体属性的表列上应用JPQL。 原因是JPA(包括JPQL)在这些实体上运行。
改为使用本机查询。