Могу ли я выполнить пакет запросов с использованием jpa / hibernate за один раз? - PullRequest
0 голосов
/ 18 мая 2018

Вот пример кода.sourceFileItemNo и entityDplStatus являются массивом некоторых значений.

Query query; 
for(int i = 0 ;(sourceFileItemNo!=null && i< sourceFileItemNo.length); i++){
    Object[] parameters = {entityDplStatus[i],"1",sourceFileItemNo[i]};
    String queryString = "UPDATE GtcEntityDetailsValue c SET c.dplStatus=?1 where c.referenceNo=?2 and c.itemNo=?3";
    query = manager.createQuery(queryString);
    query = setQueryParameters(query, parameters);
    query.executeUpdate();
}

Здесь в этом случае мы обновляем данные каждый раз в каждой итерации.Предоставляет ли JPA возможность добавлять запросы в список или что-то в этом роде и выполнять все запросы за один раз, подобно тому, как старый оператор соединения выполняет пакет?

1 Ответ

0 голосов
/ 18 мая 2018

Да, вы можете легко сделать это, используя hibernate, передать список объектов с обновленными значениями, которые вы хотите сохранить, а затем просто выполните:

 private void updteRecord(List<Records> records){
    int batchSize=10;
    for(int i=0;i<records.size();i++)
    {
        getSession().saveOrUpdate(records.get(i));

        if(i%batchSize==0)
        {
            getSession().flush();
            getSession().clear();
        }
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...