Java: Не в состоянии установить режим автоматического коммита со значением false в Java 1.4 API?
-
19-09-2019 - |
Вопрос
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), и это позволит вам изменить эту настройку.
Тем не менее, то, как вы используете его в своем коде, вам не нужно устанавливать его на ложь, все делается в транзакциях, и вы контролируете их с помощью коммита или отката.