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);