gpt4 book ai didi

spring-data - 当我的表没有数据时从表中选择最大 ID 时出现错误

转载 作者:行者123 更新时间:2023-12-05 09:23:47 24 4
gpt4 key购买 nike

我从我的表中选择了最大代码,当它有数据时它可以工作但是当表为空时我得到如下错误:

这是存储库中的代码:

@Repository("depositRepository")
public interface DepositRepository extends JpaRepository<Deposit,Integer>,
JpaSpecificationExecutor<Deposit> {
@Query("select max(u.code) from Deposit u")
String getMaxCode();


}

这是我在服务中调用以获得结果的代码:

String maxCode=depositRepo.getMaxCode();

我在下面提到了错误:

Hibernate: 
select
max(deposit0_.code) as col_0_0_
from
rems.tbldeposit deposit0_
20:10:55,182 ERROR [rems.controller.DepositController] java.lang.NullPointerException

最佳答案

当从空记录集中选择 max() 时,DBMS 返回 null。

如果没有从您的服务方法中看到更多代码上下文,很难判断,但我猜您稍后会在 getMaxCode() 结果上调用一些操作,例如 maxCode.equals(...) 或 maxCode.toString( ),它给你一个 NullPointerException。

为避免异常,您可以在 java 代码中进行空检查:

String maxCode=depositRepo.getMaxCode();
maxCode = (maxCode==null) ? "0" : maxCode;

或者您可以调整查询以在事件 max(u.code) 为 null 时返回默认值,如下所示:

@Query("select coalesce(max(u.code), '0') from Deposit u")

关于spring-data - 当我的表没有数据时从表中选择最大 ID 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19095721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com