错误代码如下所示,当时写的时候想着让对象初始化的次数少一点,想着用一个对象。
ScoreSummary scoreSummary = new ScoreSummary();
// 为每个班级新增成绩汇总
for (Klass klass: courseArrangement.getKlassList()) {
scoreSummary.setCourseArrangement(courseArrangement);
scoreSummary.setKlass(klass);
scoreSummaryRepository.save(scoreSummary);
}
后来潘老师评论说这样只会保存一个对象,之后的会更新。才突然想到这个问题,其实之前是有用到的
logger.info(“ 保存 ”);
CourseArrangement assertCourseArrangement = courseArrangementService.save(courseArrangement);
logger.info(“ 断言保存成功 ”);
assertThat(assertCourseArrangement.getId()).isNotNull();
logger.info(“ 保存 ”);
courseArrangementService.save(courseArrangement);
logger.info(“ 断言保存成功 ”);
assertThat(courseArrangement.getId()).isNotNull();
你穿入的对象和你返回的是一个对象。
之后看了一下源码,感觉大概应该是我注释的意思。
@Transactional
public <S extends T> S save(S entity) {
if (this.entityInformation.isNew(entity)) {// 判断是否是新建的实体
this.em.persist(entity); // 如果是新增
return entity;
} else {
return this.em.merge(entity); // 如果不是更新
}
}