java - 如何使用 hibernate 在不迭代的情况下将 List<Object> 插入数据库?

标签 java spring hibernate

我有一个包含“作业”实体的列表。因此,我需要将列表批量插入数据库而不进行迭代。最好的方法是什么?

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public JobResult save(JobDTO dto) throws Exception {

    JobResult result = new JobResult(new Job(), dto);
    try {
        JobMapper.getInstance().dtoToDomain(result.getDtoEntity(), result.getDomainEntity());
        setBatchJobData(result);
        result.addToMessageList("Jobs Added Successfully.");
        result.updateDtoIdAndVersion();
    } catch (Exception ex) {
        ex.printStackTrace();
        result.setResultStatusError();
        result.addToErrorList(ex.getMessage());
    }
    return result;

}

private void setBatchJobData(JobResult result) throws Exception{
    List<Job> jobs = new ArrayList<>();
    for (Integer scheduleTaskId : result.getDtoEntity().getScheduleTaskIds()) {
        Job job = new Job();
        AgreementScheduleTask agreementScheduleTask = agreementScheduleTaskDao.findOne(scheduleTaskId);
        setJobData(job, agreementScheduleTask);
        setAssets(job, agreementScheduleTask);
        jobs.add(job);
    }   

}

最佳答案

如果您使用的是 spring,

  1. 使用 map 而不是列表。 Map<String, Job> jobs = new HashMap<>();

  2. 将职位添加到 map 。

  3. 一次性保存:jobRepository.save(jobs)

关于java - 如何使用 hibernate 在不迭代的情况下将 List<Object> 插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45978143/

相关文章:

java - 如何考虑夏令时在 mongoDB 中存储 future 的调度日期

java - Spring 启动,maven : failing to run or package an application

java - Hibernate/JPA 将 native 查询的结果映射到持有实体的非实体

java - Dijkstra算法Java : Last edge always gets added instead of shortest

java - 流内部不同数值类型的转换/比较

java - 如何在 spring boot 应用程序中配置 PageableHandlerMethodArgumentResolver

java - Hibernate 在连接到子表时寻找父字段名称

java - 使用 jna 获取 IShellFolder

java - jhipster-如何添加新角色

java - org.hibernate.MappingException : Composite primary key as a foreign key in another table