Пакет JDBC PreparedStatement продолжает вставку при ошибке

Привет парень, я создаю пакет сPreparedStatement в Java, как это

for(Item  item: list){
    ps.setString(1, item.getSome());
    ps.setString(2, item.getFoo());
    ps.setString(3, item.getBatman());
    statement.addBatch();

    if (++count % batchSize == 0) {
        results = ps.executeBatch(); //execute parcial batch

        if (results != null)
           System.out.println(results.length);
    }

}
results= ps.executeBatch(); //execute rest of batch

Сервер datebase является MySQL, в таблице для вставки у меня есть несколько ограничений

По этим ограничениям при вставке выдает ошибки

Я хочу запустить пакет и пропустить ошибки, в этот момент выбрасывают исключение концы партии

Прежде чем я создаю партию, у меня есть Big для сохранения одного за другим, как

//seudocode level
For item
Try{
   insert item
}catch(E){nothing happens}

Но это очень медленно, в некоторых случаях партия обрабатывает 4000 позиций, вставляет 1500 и пропускает остальные

Как мне сделать с партией?

РЕДАКТИРОВАТЬ

Я использую weblogic, чтобы соединиться с этим драйверомmysql-connector-java-commercial-5.0.3-bin

Я проверяю это свойства

1.

continueBatchOnError=true

2.

rewriteBatchedStatements=true

3.

continueBatchOnError=true
rewriteBatchedStatements=true

И добавитьconnection.setAutoCommit(false); но продолжает бросать исключение в дубликатах

РЕДАКТИРОВАТЬ

забыл упомянуть, я использую для подключения Hibernate + Spring

Единственный пример For-Save сделан в Hibernate, но для производительности я попытался использовать пакет JDBC, в других процессах в веб-приложении также используется JDBC с подключением из Hibernate и работает хорошо

Это полный код

@Transactional
public void saveMany(final List<Item> items) {
    getMySqlSession().doWork(new Work() {
        @Override
        public void execute(Connection connection) throws SQLException {

            StringBuilder sb = new StringBuilder();
            sb.append("INSERT INTO `FRT_DB`.`ITEM` ");
        ,    sb.append("( ");
            sb.append("`masterID`, ");
            sb.append("`agent`, ");
            sb.append("`rangeID`) ");
            sb.append("VALUES ");
            sb.append("( ");
            sb.append("?, ");
            sb.append("?, ");
            sb.append("?) ");

            int[] results = null;

            PreparedStatement ps = null;

            try {
                connection.setAutoCommit(false);
                ps = connection.prepareStatement(sb.toString());


                final int batchSize = 250;
                int count = 0;

                for (Item item : items) {

                    if (item.getMasterId() != null) {
                        ps.setInt(1, item.getMasterId());
                    } else
                        ps.setNull(1, java.sql.Types.INTEGER);

                    if (item.getAgent() != null) {
                        ps.setString(2, item.getAgent());
                    } else
                        ps.setNull(2, Types.VARCHAR);

                    if (item.getRangeId() != null)
                        ps.setInt(3, item.getRangeId());
                    else
                        ps.setNull(3, Types.INTEGER);

                    ps.addBatch();

                    if (++count % batchSize == 0) {
                        results = ps.executeBatch();

                        if (results != null)
                            System.out.println(results.length);

                    }

                }

                results= ps.executeBatch();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    });
}

Это производит следующее исключение

java.sql.BatchUpdateException: дублирующаяся запись «1-000002725» для ключа «masterID»

Но мне нужно продолжить

настройки spring + hibernate мешают свойствам jdbc? я не знаю

Ответы на вопрос(1)

Ваш ответ на вопрос