【问题标题】:Get Status Statistics from enumerated column JPA CrudRepository H2从枚举列 JPA CrudRepository H2 获取状态统计信息
【发布时间】:2021-10-12 22:45:57
【问题描述】:

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

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

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

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

您有哪些最佳实践建议?

提前感谢您的帮助。

【问题讨论】:

  • 您可以为每个案例创建一个包含计数的案例语句。 stackoverflow.com/questions/5295626/…
  • @SimonMartinelli 我了解 SQL 解决方案。谢谢你。我还想问一下:我可以在 JPARepository 中使用带有自定义查询的无参数方法来完成此操作吗?
  • 不仅仅是 SQL!它也适用于 JPQL(如示例中所示)。那么是的,您的实体看起来如何?

标签: spring-boot hibernate jpa h2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多