BatchingBatcher 上的奇怪 NPE“JDBC 驱动程序未返回预期的行数”

Posted

技术标签:

【中文标题】BatchingBatcher 上的奇怪 NPE“JDBC 驱动程序未返回预期的行数”【英文标题】:Weird NPE on BatchingBatcher "JDBC driver did not return the expected number of row counts" 【发布时间】:2011-07-10 13:08:19 【问题描述】:

我在 tomcat 上运行一个 spring/hibernate java 应用程序,我在更新时看到这个时髦的错误: JDBC 驱动程序没有返回预期的行数

Caused by: java.lang.NullPointerException
        at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:90)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:262)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:179)

我最近将我的 mysql 连接器更新到版本 5.1.15。 有人见过这样的吗?

【问题讨论】:

你介意提供触发这个的代码吗?请在 openSession 和 session.close 之间发布您的实体和代码。 检查,你设置批量大小了吗? 我的批量大小是 50。在这开始发生之后,我将它降低到 0,这当然不利于性能。我今天没看到。下次发生错误时我会发布详细信息@paretnon。 查看 BatchingBatcher 的源代码 - docjar.com/html/api/org/hibernate/jdbc/… 我认为实现很差。您引用的消息是警告,而不是错误。检测到错误情况后,代码会继续尝试验证已知的错误数据。也就是说,问题可能是您的某个语句有语法错误,或者正试图返回结果集。最好的办法是找出问题发生时正在执行的语句,然后单独执行它们并查看它们返回的每个语句。 【参考方案1】:

我想我曾经遇到过这个问题,并通过为查询返回的对象类型实现 hashCode 和 Equals 方法来修复它。

【讨论】:

以上是关于BatchingBatcher 上的奇怪 NPE“JDBC 驱动程序未返回预期的行数”的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 和 proguard:takePicture 上的相机插件 NPE

在简单的正则表达式替换中获取 NPE(Spark 上的 Scala)

android.content.Context.getString 中的 NPE 导致应用程序在启动时崩溃

NPE,同时访问实例化和构造函数配置的不可变对象的原始类型(双精度)。 (不涉及自动装箱或反射)

为啥 InputStreamReader 从 jar 读取时会抛出 NPE?

在另一个 Activity 中将字符串(或数组)传递给 ListView(NPE 错误)