указать генератор последовательности в качестве значения

Есть ли возможность указать генератор последовательности как значение для столбца в SimpleJdbcInsert, JdbcTemplate, NamedParameterJdbcTemplate или любом другом классе для пакетного выполнения?

например, я хочу, чтобы SQL был сгенерирован любым из вышеперечисленных классов как:

INSERT INTO SOME_TABLE_NAME (ID, COLUMN_A,...) VALUES (SOME_SEQUENCE.NEXTVAL, 'value for column A', ...);

Пример фрагмента кода выглядит так:

import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;

List<SomeTableEntity> listOfEntities; // received from method parameter
SimpleJdbcInsert sql = new SimpleJdbcInsert(dataSource).withTableName("SOME_TABLE_NAME");
SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(listOfEntities.toArray());
sql.executeBatch(batch);

Я пытался обмануть SimpleJdbcInsert как:

SqlParameterSource id = new MapSqlParameterSource("ID", "SOME_SEQUENCE.nextval"));
SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(listOfEntities.toArray());
List<SqlParameterSource> params = new ArrayList<>(batch.length + 1);
params.add(id);
for (SqlParameterSource param : batch)
{
    params.add(param);
}
sql.executeBatch(params.toArray(new SqlParameterSource[] {}));

Но неудивительно, что это не сработало, поскольку столбец ID имеет числовой тип, и он пытался заполнить значение как "SOME_SEQUENCE.nextval" вместо оценки результата SOME_SEQUENCE.nextval.


PS: в таблице слишком много столбцов, и из-за этого я не хочу использовать подготовленный оператор solution

String sql = "INSERT INTO USER 
        (USER_PK, ACCOUNTNUMBER, FIRSTNAME, LASTNAME, EMAIL ) 
       VALUES 
        (user.nextval, ?, ?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, accountNumber);
ps.setString(2, firstName);
ps.setString(3, lastName);
ps.setString(4, email);

person Mohammad Faisal    schedule 05.02.2020    source источник
comment
Вы имеете в виду, что вам нужен порядковый номер другой таблицы?   -  person Mehrdad HosseinNejad Yami    schedule 05.02.2020
comment
@MehrdadHosseinNejad: Нет. Я создал/создам последовательность, которая будет использоваться для заполнения значения столбца ID.   -  person Mohammad Faisal    schedule 05.02.2020
comment
Я не думаю, что это возможно. В настоящее время мы запускаем запрос перед основным insert, чтобы получить следующий идентификатор в соответствующей последовательности, а затем добавить это значение в запрос.   -  person mohammedkhan    schedule 18.02.2020
comment
@mohammedkhan: Но в этом случае вы не сможете воспользоваться преимуществами SimpleJdbcInsert.executeBatch().   -  person Mohammad Faisal    schedule 18.02.2020
comment
@MohammadFaisal Хорошо, если детали, которые вы вставляете в базу данных, получены из POJO, вы можете установить идентификаторы из последовательности на свои объекты, а затем запустить пакетное обновление. Если это не так, то нет, запустить его в пакетном режиме невозможно. Вам придется запускать каждый оператор INSERT отдельно.   -  person mohammedkhan    schedule 20.02.2020
comment
@mohammedkhan согласен с вашим комментарием.   -  person Mohammad Faisal    schedule 20.02.2020