小谈Hibernate下SQL Grammer Exception,Could not execute JDBC batch update异常的解决

2023-10-31

        基于Hibernate的应用程序的开发过程中,通过Hibernate操作数据库时,在程序执行过程中出现了SQL Grammer Exception,Could not execute JDBC batch update的提示信息。遇到此类问题确实让人感觉摸不着头脑(尤其是第一次遇到),不过解决此类问题并不需要大动干戈地大规模修改代码,也不需要做更改数据库连接方式这样动用牛刀的事。问题的来源还在于细节上出了问题。

 
此类问题的出现主要来自三个方面。
1、 SQL语句中存在语法错误或是传入的数据有误;
2、 数据库的配置不合法,或者说是配置有误。较容易出现的有数据表的映射文件(,hbm.xml文件)配置有误;Hibernate.cfg.xml文件配置有误;
3、 当前的数据库用户权限不足,不能操作数据库。以是以Oracle 数据库为例,这种情况下在错误提示中会显示java.sql.BatchUpdateException: ORA-01031: insufficient privileges这样的信息。
 
以下是我在项目中解决SQL Grammer Exception,Could not execute JDBC batch update异常时使用的方法。
 
首先,根据错误提示信息查看数据表的映射文件是否配置正确,映射的列名、属性是否正确;
 
其次,如果提示信息中存在insufficient privileges这样的信息则查看当前使用的数据库用户是否有对当前操作的数据库、数据表具有操作权。在解决这个问题是,我也在网上找了这类问题的很多资料,造成此类问题的发生绝大多数情况下是由于数据库配置错误,或者是操作的表、数据库无权限。
 
再者,如果上述都没问题,那么很可能是传入的数据非法或是SQL语句不合法(比较常见的是在SQL语句中使用了默认的关键字,如Date,User之类)。并采用Debug跟踪的方式查看传入SQL语句中的变量是否正确,是否合法。
 
以上便是我使用的一些经验和方法。解决这个问题应该说花费了我很长的时间,差不多有一天半吧,最后才发现是由于数据库权限不足造成的。走了很多弯路啊…不过还好,还是解决了。呵呵….
 
接下来我把当时的出错信息粘出来,希望对遇到此类问题的朋友能有所帮助。
 
出错提示信息如下:
 
Hibernate: insert into XT_JYSHQ (ZQJC, ZSP, JKP, ZGJ, ZDJ, YJLX, SPJ, CJL, CJJE, JYRQ, ZQDM) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2007-07-26 09:55:17,000 >> WARN >> org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:71) >> SQL Error: 1031, SQLState: 42000
2007-07-26 09:55:17,000 >> ERROR >> org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:72) >> ORA-01031: insufficient privileges
 
2007-07-26 09:55:17,000 >> WARN >> org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:71) >> SQL Error: 1031, SQLState: 42000
2007-07-26 09:55:17,000 >> ERROR >> org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:72) >> ORA-01031: insufficient privileges
 
2007-07-26 09:55:17,000 >> ERROR >> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:299) >> Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
       at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65)
       at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
       at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
.(有略)
 
[insert into XT_JYSHQ (ZQJC, ZSP, JKP, ZGJ, ZDJ, YJLX, SPJ, CJL, CJJE, JYRQ, ZQDM) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is java.sql.BatchUpdateException: ORA-01031: insufficient privileges
 
java.sql.BatchUpdateException: ORA-01031: insufficient privileges
 
       at oracle.jdbc.dbaccess.DBError.throwBatchUpdateException(DBError.java:459)
       at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:3907)
       at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
       at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
       at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:230)
       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
(有略)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小谈Hibernate下SQL Grammer Exception,Could not execute JDBC batch update异常的解决 的相关文章

  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • JAX-WS Soap 错误未出现在 WSDL 中

    我正在使用 JAX WS 创建一个 Web 服务 我正在使用 Java 到 WSDL 方法创建它 我无法让我的例外按照我的要求工作 我创建了以下异常类 WebFault public class MyWebServiceException
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 使用条件查询限制加入休眠搜索查询

    我想知道您如何将以下两个查询连接在一起 标准条件查询 Criteria result1 session createCriteria Store class add Restrictions eq department name categ
  • “包含非 LDH ASCII 字符”异常从何而来?

    我开发了一个应用程序 spring magnolia 它在新年 2018 左右开始为我抛出这个异常 但不为任何其他同事抛出异常 例外是正确的 有一个 在配置的主机名中 因此域名应该是固定的 尽管如此 它之前一直在工作 对于其他人来说它仍然在
  • 为表中的每个组选择前 N 行

    我面临一个非常常见的问题 即 为表中的每个组选择前 N 行 考虑一个表id name hair colour score列 我想要一个结果集 对于每种头发颜色 都能得到前 3 名得分手的名字 为了解决这个问题 我得到了我所需要的Rick O
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • 执行带有 EXCEPTION 的 PostgreSQL 查询会导致两条不同的错误消息

    我有一个 PostgreSQL 查询 其中包含事务和列重复时的异常 BEGIN ALTER TABLE public cars ADD COLUMN top speed text EXCEPTION WHEN duplicate colum
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • SQL Server 上的语法错误

    这可能是一个愚蠢的语法错误 但我只是继续阅读我的程序 但我无法弄清楚我的错误在哪里 消息 156 第 15 级 状态 1 第 41 行关键字附近的语法不正确 为了 这是我的代码 alter procedure LockReservation

随机推荐

  • (一)图像的表示与通道数问题、读取并展示图片

    图像的表示与通道数问题 数字图像的基本概念 对于一幅的数字图像 我们看到的是 肉眼可见的一幅真正的图片 但是计算机看来 这副图像只是一堆亮度各异的点 一副尺寸为 M N 的图像可以用一个 M N 的矩阵来表示 矩阵元素的值表示这个位置上的像
  • Git基本介绍

    一 Git简介 Git是一个版本控制的工具 我们可以把每天的工作代码放到Git上 同时Git的特点是分布式的 可以搭建集群 以保证一个Git宕机 导致数据丢失 可以实现本地提交 避免网络问题造成不可使用的状况 SVN和Git的区别 1 SV
  • WebSocket 动态获取

    initSocket function initSocket webSocket new WebSocket ws window location host header soc imageSocket new WebSocket ws w
  • 目标检测应用竞赛

    点击上方 AI算法修炼营 选择加星标或 置顶 标题以下 全是干货 目标检测应用竞赛 天池铝型材表面瑕疵 数据集下载链接 https tianchi aliyun com competition entrance 231682 informa
  • 数据结构KMP算法配图详解(超详细)

    KMP算法配图详解 前言 KMP算法是我们数据结构串中最难也是最重要的算法 难是因为KMP算法的代码很优美简洁干练 但里面包含着非常深的思维 真正理解代码的人可以说对KMP算法的了解已经相当深入了 而且这个算法的不少东西的确不容易讲懂 很多
  • MYSQL 项目中的实际运用(一)

    目录 1 CAST 2 select 1 3 CASE WHEN THEN ELSE END 4 对表字段名的操作 5 派生表 6 嵌套查询 7 while if 8 临时表 9 读写操作的影响行数 10 NULL相关函数 11 分组聚合
  • 什么是分布式软件系统

    什么是分布式软件系统 分布式软件系统是什么意思 分布式软件系统 Distributed Software Systems 是支持分布式处理的软件系统 是在由通信网络互联的多处理机体系结构上执行任务的系统 它包括分布式操作系统 分布式程序设计
  • MATLAB基础——回家第六天

    MATLAB数组 MATLAB中的特殊阵列 MATLAB幻方 产生相同的总和 当它的元素加入逐行 逐列或对角线幻方是一个正方形 使用 magic 函数创建一个幻方阵列 它需要一个单数的参数 该参数必须是一个大于或等于3的标量 例如 magi
  • @Configuration 和 @Component加载过程,执行区别

    转载链接 Spring Configuration 和 Component 区别
  • 2021-2-27 Bugkuctf 简单个人收集

    简单个人信息收集 80 在哈尔滨市阿城区胜利街六委十三组 有个叫杜甫的你能把他的手机号找到吗 flag格式 flag 手机号 答案 flag 15206164164 使用社工库 连接 http site3 sjk space dd php
  • Dynamic crm 组织数据库中存在已加密的字段

    导入一个组织的时候报错如下 按照提示进入 设置 数据管理 数据加密 激活时 又提示如下错误 这时候需要去数据库修改一下配置 sql如下 SELECT ColumnName BitColumn FROM MSCRM CONFIG dbo De
  • Hive(二)——数据类型与文件格式

    Hive 二 数据类型与文件格式 数据 基本数据类型 集合数据类型 分隔符 数据 John Doe A100000 0 AMary Smith BTodd Jones AFederal Taxes C 2 BStateTaxes C 05
  • 微信小程序.js文件超过2M

    1 分包 但总的不能超过4M 分包不能超过2M 可以百度微信小程序如何分包 2 压缩微信小程序文件 例如我的一个 js文件2 7M 压缩步骤 1 下载Node js 下载网址 https nodejs org en download 配置网
  • 智能设备管理系统

    开发工具 eclipse idea vscode等 数据库 sqlite mysql sqlserver等 功能模块 请用文字描述 至少200字 基于物联网的智能设备管理系统 模块划分 公告类型 公告信息 仓库信息 设备类型 智能设备 供应
  • 基于go+vue的开源微社区

    真正的大师 永远都怀着一颗学徒的心 一 项目简介 今天说的这个软件是一款基于go vue的开源微社区 二 实现功能 广场 主题 主页 提醒 收藏 点赞 钱包 设置 三 技术选型 go vue html css js 四 界面展示 五 源码地
  • Discuz!图片用hide代码隐藏设置回复或积分高于多少可见在手机版BUG一枚,附带解决办法

    如果所示 Discuz 发帖的时候有个很实用的功能 就是隐藏代码hide 可以设置回复可见或者高于多少积分的时候可见 很多资源类 图片类网站很喜欢实用这个功能 可以增加网友互动 但是此项功能存在bug 很多站长为了吸引用户 设置一两个图片是
  • 【C++ STL学习之三】容器deque深入学习

    C STL容器deque和vector很类似 也是采用动态数组来管理元素 使用deque之前需包含头文件 include
  • 计算机提示msvcr110.dll丢失的正确解决方法

    首先在电脑随便打开一个浏览器后在顶部输入 dll修复程序 site 按下键盘的回车键打开前往 下载完成的修复工具需要对其进行压缩 解压好了以后打开工具 可以看到修复工具里面右边有修复与检测的项目 点击开始检测丢失的dll系统文件 检测完成点
  • 有关宽字符wchar_t编码方式的问题

    在工程文件时 常常遇到字符乱码的问题 查了下 归结于宽字符wchar t和窄字符char的区别 简单说下这两者之间的区别 1 char是8bit数据 能表示ASCII码中前256个字符 包括前128个可见字符和后128个不可见字符 2 wc
  • 小谈Hibernate下SQL Grammer Exception,Could not execute JDBC batch update异常的解决

    基于Hibernate的应用程序的开发过程中 通过Hibernate操作数据库时 在程序执行过程中出现了SQL Grammer Exception Could not execute JDBC batch update的提示信息 遇到此类问