Java: Не в состоянии установить режим автоматического коммита со значением false в Java 1.4 API?

StackOverflow https://stackoverflow.com/questions/1912779

Вопрос

SQL Server 200 Java 1.4 JBoss 3

Привет, я получу сообщение исключения "Вы не можете установить автопоммит во время управляемой транзакции"

Код ниже

    try {
                try {
                    connection = getConnection();
                } catch (Exception e) {
                    throw new ConnectionException(e.getMessage());
                }
                for(int i=0;i<recordIds.size();i++)
                {
                    String currentRecordId=(String)recordIds.get(i);
                    try
                    {
                    //exception on this line    connection.setAutoCommit(false);
                        preparedStatement = connection.prepareStatement(getSQL("PurgeRecordInDumpData"));  
                        preparedStatement.setLong(1,Long.parseLong(currentRecordId));
                        int numberOfUpdates=preparedStatement.executeUpdate();
                        if(numberOfUpdates!=1)
                        {
                            throw new Exception("Record with record id "+currentRecordId +"could not be purged.");
                        }
                        preparedStatement.close();
                        connection.commit();
                        listOfPurgedRecords.add(currentRecordId);
                    }
                    catch(Exception e)
                    {
                        connection.rollback();
                    }
                }
                return listOfPurgedRecords;

            }

Что такое причина этого исключения и что это значит?

Это было полезно?

Решение

Ошибка ясна, вы не можете установить автопоммит, пока вы находитесь в управляемой транзакции. Вам даже не нужно устанавливать это на false, так как это по умолчанию, вы используете, чтобы включить его автоматическое количество.

Я не уверен, что если вы используете J2EE и EJB, если вы есть и хотите включить AutoCommit, вы можете изменить свою настройку на транзакцию управляемой бобов (BMT), и это позволит вам изменить эту настройку.

Тем не менее, то, как вы используете его в своем коде, вам не нужно устанавливать его на ложь, все делается в транзакциях, и вы контролируете их с помощью коммита или отката.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top