錯誤代碼以下所示,當時寫的時候想着讓對象初始化的次數少一點,想着用一個對象。this
ScoreSummary scoreSummary = new ScoreSummary(); // 爲每一個班級新增成績彙總 for (Klass klass: courseArrangement.getKlassList()) { scoreSummary.setCourseArrangement(courseArrangement); scoreSummary.setKlass(klass); scoreSummaryRepository.save(scoreSummary); }
後來潘老師評論說這樣只會保存一個對象,以後的會更新。才忽然想到這個問題,其實以前是有用到的code
logger.info("保存"); CourseArrangement assertCourseArrangement = courseArrangementService.save(courseArrangement); logger.info("斷言保存成功"); assertThat(assertCourseArrangement.getId()).isNotNull();
logger.info("保存"); courseArrangementService.save(courseArrangement); logger.info("斷言保存成功"); assertThat(courseArrangement.getId()).isNotNull();
你穿入的對象和你返回的是一個對象。orm
以後看了一下源碼,感受大概應該是我註釋的意思。對象
@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); // 若是不是更新 } }