gpt4 book ai didi

java - 在 getSingleResult 聚合中处理 null 的正确方法

转载 作者:行者123 更新时间:2023-12-04 07:45:20 25 4
gpt4 key购买 nike

是否有任何正确的方法来处理空值,例如用户表中没有现有记录,因此它不会抛出空指针:

 public long generateNextId() {
Query query = getEntityManager().createQuery("SELECT MAX(id)+1 from Users");
Object obj = query.getSingleResult();
if (obj == null) {
return 1;
}
return (Long) query.getSingleResult();
}

最佳答案

如果数据库中不存在该记录,请不要使用 getSingleResult() .查看javadoc,您需要确保记录存在才能使用getSingleResult()

getSingleResult

java.lang.Object getSingleResult()

Execute a SELECT query that returns a single untyped result.

Returns:the result

Throws:

NoResultException - if there is no result

NonUniqueResultException - if more than one result



相反,使用 getResultList()
public long generateNextId() {
Query query = getEntityManager().createQuery("SELECT MAX(id)+1 from Users");
List<Object> objs = query.getResultList();
return objs.isEmpty() ? 1 : Long.parseLong(objs.get(0));
}
此外,我会使用 TypedQuery<Long>如果我是你
public long generateNextId() {
TypedQuery<Long> query = getEntityManager().createQuery("SELECT MAX(id)+1 from Users", Long.class);
List<Long> objs = query.getResultList();
return objs.isEmpty() ? 1 : objs.get(0);
}

如果,就像 this question 中记录的那样,查询可以返回 null那么你可以使用 null检查或使用 Optional#ofNullable wrapper

关于java - 在 getSingleResult 聚合中处理 null 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67227597/

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