java.sql.SQLException: вы не можете выполнить откат с набором автоматической фиксации

У меня проблема с моим проектом. Проблема возникает, когда я подключаюсь к базе данных с библиотекой.

Эта библиотека имеет следующий код:

PreparedStatement stmt = null;
try {
    con.setAutoCommit(true);
    stmt = con.prepareStatement(this.sqlIniBD);
    stmt.setString(1, id);
    stmt.executeUpdate();
} catch (Throwable t) {
    if (this.tavi.activo()) this.tavi.escribir(toString(), "No se ha podido insertar la fila inicial para las claves de encriptacion (" + id + "). Posiblemente ya existe: " + t);
}

Я хочу спросить вас, есть ли возможность поставить autoCommit(false) в мой standalone.xml. Может быть, это странно или глупо. Это источник данных, например:

<datasource jta="false" jndi-name="java:/xxx" pool-name="xxx" enabled="true" use-ccm="false">
    <connection-url>jdbc:oracle:thin:@oradag.cm.es:1524:oradag1</connection-url>
    <driver-class>oracle.jdbc.OracleDriver</driver-class>
    <connection-property name="autoCommit">
        <!-- not working -->false 
    </connection-property>
    <driver>ojdbc7.jar</driver>
    <security>
        <user-name>xxx</user-name>
        <password>xxx</password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <timeout>
        <set-tx-query-timeout>false</set-tx-query-timeout>
        <blocking-timeout-millis>0</blocking-timeout-millis>
        <idle-timeout-minutes>0</idle-timeout-minutes>
        <query-timeout>0</query-timeout>
        <use-try-lock>0</use-try-lock>
        <allocation-retry>0</allocation-retry>
        <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
    </timeout>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>

Любые идеи??? Я не могу изменить библиотеку, у меня нет кода.

Так что моя единственная надежда на standalone.xml.


person Dekker    schedule 24.11.2016    source источник
comment
Вы работаете в JBoss или WildFly или что-то в этом роде?   -  person TT.    schedule 24.11.2016
comment
14:58:12,349 INFO [org.jboss.as] (поток службы MSC 1–6) JBAS015899: JBoss EAP 6.3.0.GA (AS 7.4.0.Final-redhat-19) инициализировано   -  person Dekker    schedule 24.11.2016
comment
Это точно версия mi jboss   -  person Dekker    schedule 24.11.2016
comment
Где трассировка стека со всей информацией об исключениях? можешь прикрепить?   -  person pleft    schedule 24.11.2016
comment
Конечно... здесь...   -  person Dekker    schedule 24.11.2016
comment
####[1.-es.cm.arq.psv.base.GProcesosException: (COD:5) Ошибка удаления действия (es.cm.pf.ficheros.subprocessos.PFIsef,-1) 3.-java.sql .SQLException: вы не можете выполнить откат с установленной автоматической фиксацией! java.sql.SQLException: вы не можете выполнить откат с установленным автофиксацией!   -  person Dekker    schedule 24.11.2016
comment
Ваша программа откатывается из-за ошибки или вы делаете это намеренно? Я думаю, вам нужно выяснить, какая ошибка вызывает действие отката.   -  person pleft    schedule 24.11.2016
comment
Не могли бы вы отредактировать свой вопрос и включить соответствующую трассировку strack внутри вопроса? Также укажите, в какой именно момент возникает ошибка. Эта трассировка стека — это информация, которая должна быть в самом вопросе, а не в комментариях.   -  person TT.    schedule 24.11.2016
comment
Ваш код явно устанавливает con.setAutoCommit(true), поэтому ответ отрицательный, не без проксирования соединения и игнорирования setAutoCommit.   -  person Mark Rotteveel    schedule 24.11.2016


Ответы (1)


Хорошо, наконец, решение состояло в том, чтобы выбрать код внутри банки и создать новый проект Java. Измените переменную на setAutoCommit(false) и снова перекомпилируйте проект с экспортом в виде jar. Итак, наконец, я получаю свою новую банку со значением, измененным в моей переменной.

Странное решение, но проблема была решена. Конечно, я использовал декомпилятор, чтобы сделать это решение возможным.

Спасибо вам всем

person Dekker    schedule 28.11.2016