我的问题与this thread有关.
以下是我使用某些字段进行分组的存储库方法:
@Query(value = "SELECT t.test_id AS testId, COUNT(t.id) AS total FROM test_instances t GROUP BY t.test_id", nativeQuery = true)
public Object[] getTestStats();
运行成功,得到的结果如下:
[ [ 1, 2 ], [ 2, 1 ], [ 3, 2 ], [ 5, 1 ], [ 7, 2 ], [ 8, 1 ], [ 9, 1 ] ]
但是,当我从 Object[]
替换 getTestStats() 的返回类型时至List<?>
我收到以下错误消息:
{
"cause": null,
"message": "Couldn't find PersistentEntity for type class [Ljava.lang.Object;!"]
}
我想使用List<?>
因为如果它正常工作,我想使用自定义投影将其转换为,即 List<CustomProjection>
我尝试了以下返回类型 {List<?>, List<CustomProjection>, CustomProjection[]}
;
但每件事都返回相同的错误。希望有人能帮助我,先谢谢了。
最佳答案
如果你想返回一个列表,那么:
- 创建一个保存该字段的构造函数
- 在您的查询中,您可以创建一个包含此字段的对象。
例如:
Select new com.CustomObject(t.test_id, COUNT(t.id))
在这种情况下,您可以使用 List<CustomObject>
而不是对象数组
关于java - 如何从 Spring Data JPA GROUP BY 查询返回对象列表而不是对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554165/