hibernate - Mariadb客户端jar在删除一行时抛出ArrayIndexoutofbounds异常
问题描述
我使用 mariadb 作为我的 ORM。我正在使用 jpa 的表中使用主键删除一行。这是一个简单的本机删除查询。看起来如果匹配行不存在,结果集处理就有这个问题。但是,这种行为是不一致的,并不经常发生。
@Query(value ="Delete from table where id = :paramId",nativeQuery =true)
java.lang.ArrayIndexOutOfBoundsException: null
at org.mariadb.jdbc.internal.com.read.Buffer.getLengthEncodedBytes(Buffer.java:318) ~[mariadb-java-client-2.2.0.jar!/:na]
at org.mariadb.jdbc.internal.com.read.resultset.ColumnInformation.getString(ColumnInformation.java:242) ~[mariadb-java-client-2.2.0.jar!/:na]
at org.mariadb.jdbc.internal.com.read.resultset.ColumnInformation.getName(ColumnInformation.java:258) ~[mariadb-java-client-2.2.0.jar!/:na]
at org.mariadb.jdbc.MariaDbResultSetMetaData.getColumnLabel(MariaDbResultSetMetaData.java:187) ~[mariadb-java-client-2.2.0.jar!/:na]
at org.hibernate.dialect.ColumnAliasExtractor$1.extractColumnAlias(ColumnAliasExtractor.java:39) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.custom.JdbcResultMetadata.getColumnName(JdbcResultMetadata.java:59) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.custom.ScalarResultColumnProcessor.performDiscovery(ScalarResultColumnProcessor.java:39) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:487) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.getResultSet(Loader.java:2125) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1900) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1876) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.doQuery(Loader.java:919) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2617) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2600) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2429) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.Loader.list(Loader.java:2424) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:336) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1967) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:322) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:125) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606) ~[hibernate-entitymanager-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:529) ~[hibernate-entitymanager-5.0.12.Final.jar!/:5.0.12.Final]
表结构: CREATE TABLE inst
(
INST_ID
INT(11) NOT NULL AUTO_INCREMENT,
STATUS_ID
SMALLINT(6) NULL DEFAULT NULL,
MODULE_ID
SMALLINT(6) NULL DEFAULT '2',
STAGE_CONFIG_ID
MEDIUMINT(9) NULL DEFAULT NULL,
COMMENTS
VARCHAR(1000) NULL DEFAULT NULL,
IS_LOCKED
VARCHAR( 1) NULL DEFAULT NULL,
LOCKED_BY
VARCHAR(100) NULL DEFAULT NULL,
RECORD_DATE
DATETIME(6) NOT NULL,
VERSION
INT(11) NULL 默认NULL,
ROLE_ID
MEDIUMINT(9) NULL 默认NULL, 主键( INST_ID
), 唯一索引INST_PK
( INST_ID
), 索引INST_MODULE_FK
( MODULE_ID
) , INDEX INST_WKF_STAGE_CONFIG_FK1
( STAGE_CONFIG_ID
), INDEX INST_ID
( INST_ID
, STAGE_CONFIG_ID
), 约束外INST_MODULE_FK
键 ( MODULE_ID
) 引用module
( MODULE_ID
), 约束外INST_WKF_STAGE_CONFIG_FK1
键 ( STAGE_CONFIG_ID
) 引用stage_config
( STAGE_CONFIG_ID
) )
解决方案
推荐阅读
- bash - 使用超链接更改终端中的目录
- python - 试图定义从泡菜文件中调用键的函数
- dart - DART:如何重新排序字符串中的随机字符?
- python - 使用 Python 在 linux 终端中执行 mysql 命令
- python - 如何使用 nsetools 获取股票列表的当前市场价格?
- c# - 预期的令牌和括号无效
- swiftui - 在 SFSpeechRecognizer.requestAuthorization 中设置变量
- php - 更改网站和 wordpress URL 时,Wordress 网站会无限重新加载
- python - 创建计算器,但运算顺序始终默认为加法
- java - 为什么我的交易没有呈现?--反应和Java