首页 > 解决方案 > 从枚举列 JPA CrudRepository H2 获取状态统计信息

问题描述

我有一个名为“status”的枚举列的表。我正在实现一个端点来获取有关活动和非活动条目的统计信息。它会返回这样的响应

{ "activeCount" : 10, "inactiveCount" : 10 }

每个条目有 4 种可能的状态(活动、非活动、等待批准、可疑)。activeCount = 处于活动状态的条目数量。inactiveCount = 处于非活动/等待批准/可疑状态的条目数量。

我正在使用控制器服务存储库模式和 H2 内存数据库。我需要尽可能快。还假设该表将来会保存大量数据,因此无法将所有条目都放入内存并计算状态统计信息。

您的最佳实践建议是什么?

提前感谢您的帮助。

标签: spring-boothibernatejpah2

解决方案


只需使用类似的查询select e.status, count(*) from Entity e group by e.status。如果这对您来说还不够快,您将不得不以某种方式在专用表中维护每个组的当前计数,然后进行查询。这显然需要您为每个状态更改或插入/删除分别更改计数。通常,这可以通过使用触发器来完成。


推荐阅读