Využívam metódu org.springframework.jdbc.core.JdbcTemplate.batchUpdate (String, Collection, int, ParameterizedPreparedStatementSetter) v jarnej triede jdbcTemplate na vykonanie dávkovej aktualizácie.
Aby sme poznamenali výsledok dávkovej prevádzky, táto metóda vracia pole poľa obsahujúce nasledujúce 3 stavové kódy pre každý SQL v dávke.
java.sql.Statement.EXECUTE_FAILED
java.sql.Statement.SUCCESS_NO_INFO
An Integer value greater than 0 stating no. of records affected.
Pokúsil som sa o to poznať pri EXECUTE_FAILEDvráti sa. Takže som sa zámerne pokúsil vložiť záznam, ktorý už existuje v tabuľke, aby operácia zlyhala na DB s chybou pri porušení primárneho kľúča. Zlyhalo, ale dostal som zlyhanie vo forme výnimky:
java.sql.SQLIntegrityConstraintViolationException.
Očakával som, že v tomto prípade bude chybový kód vrátený.
Vie niekto tu, aký je presný scenár, v ktorom je chybový kód java.sql.Statement.EXECUTE_FAILED
je vrátená jdbctemplate?
odpovede:
0 pre odpoveď č. 1To úplne závisí od príslušnej implementácie konektora JDBC, ktorú budete používať. Pokladni MariaDB (oveľa lepšie "CLONE" mysql) Java Connector implementáciu o tom, ako dávajú tieto hodnoty zmysel