有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

下面是一个示例代码。 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是否提供了将查询添加到列表或其他内容,并像旧的连接语句execute batch一样在一次快照中执行所有查询的功能


共 (1) 个答案

  1. # 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();
            }
        }
    }
    

    向该方法提供的记录列表应包含需要更新的值