我可以一次性使用jpa / hibernate执行一批查询吗?

时间:2018-05-18 10:33:24

标签: java jpa

以下是示例代码。 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 :(得分:1)

是的,您可以使用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();
        }
    }
}

您要为此方法提供的记录列表应包含您需要更新的值。