Java Spring数据jpa。如果没有结果返回默认值,则查找最大值

Java Spring数据jpa。如果没有结果返回默认值,则查找最大值,java,spring,spring-data-jpa,hql,Java,Spring,Spring Data Jpa,Hql,我在spring存储库界面中实现了: @Query("SELECT max(ch.id) FROM MyEntity ch") Long getMaxId(); 如果db不是空的,它可以正常工作。如果我使用测试配置启动环境(使用H2DB)-一开始就没有数据。getMaxId()返回的结果为null。我想要这里的0 是否可以修改我的*JpaRepository以获得0结果?如果是,应如何修改?您可以使用合并如下: @Query("SELECT coalesce(max(ch.id), 0) F

我在spring存储库界面中实现了:

@Query("SELECT max(ch.id) FROM MyEntity ch")
Long getMaxId();
如果db不是空的,它可以正常工作。如果我使用测试配置启动环境(使用H2DB)-一开始就没有数据。
getMaxId()
返回的结果为null。我想要这里的0



是否可以修改我的
*JpaRepository
以获得0结果?如果是,应如何修改?

您可以使用
合并
如下:

@Query("SELECT coalesce(max(ch.id), 0) FROM MyEntity ch")
Long getMaxId();

如果没有数据,它将返回0而不是null。

请告诉我,您不是通过每次插入新实例时增加最大值来自行生成ID的。生成ID很有意义!是的,我有。我希望只有一个id生成器(igniteIdGenerator),有时候它应该修复它的状态(如果缓存从db修复,igniteIdGenerator应该被移位)。