Java 在spring jpa中处理数据库中的空值

Java 在spring jpa中处理数据库中的空值,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,这很好: @Repository public interface VoteDao extends CrudRepository <Vote, Long> { @Query(value = "select sum(points) from votes where siteuserid= ?1", nativeQuery = true) int countBySiteUser(@Param("user") SiteUser user); } 它应该为该sysout打印一个空值吗?D

这很好:

@Repository
public interface VoteDao extends CrudRepository <Vote, Long> {

@Query(value = "select sum(points) from votes where siteuserid= ?1", nativeQuery = true)
int countBySiteUser(@Param("user") SiteUser user);
}
它应该为该sysout打印一个空值吗?DAO应该用空值来回答,但事实并非如此。如果提供空值,我将能够处理它,但它不能


提前感谢您的帮助

使用
COALESCE
null
处理为
0
,这与您实际的意思相对应

@Query(
    value = "SELECT COALESCE(SUM(points), 0) FROM votes WHERE siteuserid = ?1",
    nativeQuery = true)
int countBySiteUser(@Param("user") SiteUser user);
。。。或采用编程方法的其他解决方案:

// Integer instead of int to add the "null" handling
@Query(
    value = "SELECT SUM(points) FROM votes WHERE siteuserid = ?1",
    nativeQuery = true)
Integer countBySiteUser(@Param("user") SiteUser user);
用法:

Integer count = voteDao.countBySiteUser(user);

if (count == null) {
    count = 0;
}

System.out.println("!!!!: PROPOSAL VoteService: " + count);

对我来说,
联合
解决方案似乎更好。但如前所述,这将取决于您的需要。

无法回答。你的应用程序应该做什么?问问设计师。问问同事。我们不能告诉你。卡格莫尔清楚地理解并解决了这个问题。你为什么要知道它是干什么用的?那会怎么样help@MikeEJP告诉您的是“您想要什么而不是空值”?在我的回答中,我只是假设您想要0,但事实可能并非如此。@Kagmole我没有说我不想要空值。我说我不知道怎么处理。我不理解他。谢谢Kagmole@Mike这就是重点。你将如何处理它取决于你(或者你的设计师,你的同事,这就是他的意思)。无论如何,很高兴我的建议能满足你的需要第一种方法很好,但是文档中的解释并不清楚…[链接]你能解释一下吗?ThanksIt将在其参数中返回第一个非null值。如果
SUM(points)
返回null,它将尝试下一个参数,即
0
。如果
SUM(points)
返回一个值,它将返回实际值,而无需测试下一个参数。非常感谢。我认为这将有助于其他人(不是像我这样的程序员)澄清它的工作原理与if类似。
Integer count = voteDao.countBySiteUser(user);

if (count == null) {
    count = 0;
}

System.out.println("!!!!: PROPOSAL VoteService: " + count);