美文网首页Java 杂谈
由JPA 的一个错误引起的 java.util.NoSuchEl

由JPA 的一个错误引起的 java.util.NoSuchEl

作者: Java_or_PHP | 来源:发表于2018-04-24 17:12 被阅读180次

    程序报:

    java.util.NoSuchElementException: null

    这是List 的错误,因为使用的JPA,所以首先怀疑是数据库表的字段数量和Java entity 的成员数量不一致。

    数了一下,两者的数量是一直的。这种猜想失败。

    跟踪到List的代码里,打断点,发现是处理第二个参数的时候,就挂了。这样问题就定位出来了。

        public List<Follow> findByUserUnionId(String unionId) {
            return dao.findByUserUnionId(unionId,0);
        }
    

    调用了的dao的代码:

    List<Follow> findByUserUnionId(String userUnionId,Integer delFlag);
    

    正确的应该是:

    List<Follow> findByUserUnionIdAndDelFlag(String userUnionId,Integer delFlag);
    

    在编写代码的时候,少了 AndDelFlag , 但参数实际是传了两个,这样在处理的时候就直接报错了。

    这个问题比较隐蔽,因为编译是没有任何错误的。运行的时候虽然报了这个错误,但怎么看都没问题。

    所以,个人觉得,复杂的情况下,对于JPA 来说,还是使用 @Query 注解比较好,如果出错了,会同时报SQL的错误,这就好定位问题了。

    相关文章

      网友评论

        本文标题:由JPA 的一个错误引起的 java.util.NoSuchEl

        本文链接:https://www.haomeiwen.com/subject/ztwjlftx.html