Caused by: java.sql.SQLException: 不允許的操作
at oracle.jdbc.driver.OracleStatement.getGeneratedKeys(OracleStatement.java:4568)
at org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator.processBatch(Jdbc3KeyGenerator.java:51)
MyBatis 默認 useGeneratedKeys=true,執行 INSERT/UPDATE 後均嘗試調用 getGeneratedKeys() 回填主鍵。Oracle 不支持 UPDATE 返回生成鍵,拋出異常。
@UpdateProvider(type = CRUDTemplate.class, method = "update")
@Options(useGeneratedKeys = false) // 關鍵:禁用主鍵回填
public int update(T entity);
@InsertProvider(type = CRUDTemplate.class, method = "insert")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
public int insert(T entity);
Jdbc3KeyGenerator 在 PreparedStatement.executeUpdate() 後調用 getGeneratedKeys()。INSERT 配合 RETURNING id INTO ? 或序列/觸發器可工作,但 UPDATE 無生成鍵語義。@Options 註解屬於方法級配置,精確控制每條語句行為。