用mybatis往oracle批量插入数据报错java.lang.StackOverflowError

往oracle中批量插入10000条数据,报错如下

java.lang.StackOverflowError

at java.util.HashMap.hash(HashMap.java:362)
at java.util.HashMap.getEntry(HashMap.java:462)
at java.util.HashMap.get(HashMap.java:417)
at com.alibaba.druid.sql.parser.Keywords.getKeyword(Keywords.java:151)
at com.alibaba.druid.sql.parser.Lexer.scanIdentifier(Lexer.java:847)
at com.alibaba.druid.sql.parser.Lexer.nextToken(Lexer.java:296)
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:215)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser.primary(OracleExprParser.java:485)
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:119)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSourceQueryTableExpr(OracleSelectParser.java:745)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.parseTableSource(OracleSelectParser.java:737)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseFrom(SQLSelectParser.java:316)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:272)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)
at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.query(OracleSelectParser.java:282)

at com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser.queryRest(OracleSelectParser.java:300)



mybatis xml中的sql如下:


当往oracle数据库插入10000条数据时,报以上错误,后查询阿里druid源码发现query()方法递归调用,调用层级过多,导致java.lang.StackOverflowError 。

阿里Druid源码如下:

com.alibaba.druid.sql.dialect.oracle.parser.OracleSelectParser类中的方法



猜你喜欢

转载自blog.csdn.net/yin767833376/article/details/80605132