Java 为什么在使用JDBC插入单行时会出现ORA-01422错误

Java 为什么在使用JDBC插入单行时会出现ORA-01422错误,java,oracle,jdbc,Java,Oracle,Jdbc,我看到了许多与此特定错误相关的问题,其中大多数与选择进入操作有关 不过,在本例中,我尝试插入一行,但没有找到这个特定问题的任何答案 我正在使用以下代码: final String insertSQL = "INSERT INTO XMLTYPETEST_XMLTYPE (ACTIVITYGUID, XMLDATA) VALUES (:1, XMLType(:2))"; final String guid = "BFACFEB-8ACE-4145-B04A-759822E0AA7D"; final

我看到了许多与此特定错误相关的问题,其中大多数与
选择进入
操作有关

不过,在本例中,我尝试插入一行,但没有找到这个特定问题的任何答案

我正在使用以下代码:

final String insertSQL = "INSERT INTO XMLTYPETEST_XMLTYPE (ACTIVITYGUID, XMLDATA) VALUES (:1, XMLType(:2))";
final String guid = "BFACFEB-8ACE-4145-B04A-759822E0AA7D";
final String xml = "<Activity><Changes></Changes></Activity>";
try (OraclePreparedStatement stmt = 
        (OraclePreparedStatement) conn.prepareStatement(insertSQL)) {
    stmt.setString(1, guid);
    stmt.setString(2, xml);
    stmt.execute();

} catch (SQLException ex) {
    Logger.getLogger(DBConnectionTest.class.getName())
          .log(Level.SEVERE, null, ex);
    fail();
}
我尝试了各种对象组合和
set*()
方法来设置XMLData参数以及使用
executeUpdate()
,都得到了相同的结果:

ORA-01422:精确获取返回的行数超过请求的行数

如果库版本中有任何线索,以下是相关的依赖项:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>12.2.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/oracle/xdb -->
<dependency>
    <groupId>oracle</groupId>
    <artifactId>xdb</artifactId>
    <version>1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle/xmlparserv2 -->
<dependency>
    <groupId>com.oracle.database.xml</groupId>
    <artifactId>xmlparserv2</artifactId>
    <version>19.3.0.0</version>
</dependency>

com.oracle
ojdbc8
12.2.0.1
神谕
xdb
1
com.oracle.database.xml
xmlparserv2
19.3.0.0

谢谢。

我越想它,就越怀疑不匹配的库版本。我用以下版本替换了两个库:


com.oracle.database.xml
xmlparserv2
12.2.0.1
com.oracle.database.xml
xdb6
12.2.0.1

这解决了问题/facepalm

您确定这段代码会引发错误吗?目标表上是否有执行某些操作并引发错误的触发器?是否有触发器值得怀疑。我自己创建这个表只是为了将表与XMLType和CLOB进行比较。在原始问题中添加了表DDL。错误发生在stmt.execute()行。