我的控制器如下:
@GetMapping("/groupByCourse")
public Reply getStudentsCountByCourse(){
Reply reply=new Reply();
reply.setData(service.getStudentsCountByCourse());
return reply;
}
服务是:-
public List getStudentsCountByCourse() {
List students=new ArrayList<>();
students=studentCourseRepo.findCountStudentByCourse();
getCourseCountByStudent();
return students;
}
@Transactional(Transactional.TxType.REQUIRES_NEW)
public List getCourseCountByStudent() {
List students=new ArrayList<>();
students=studentCourseRepo.findCountCourseByStudent();
return students;
}
存储库是:-
@Repository
public interface StudentCourseRepo extends CrudRepository<StudentCourseTbl, StudentCourseTblPK> {
@Query(value = "select sc.studentCourseTblPK.courseId,count(sc.studentCourseTblPK.studentId) from StudentCourseTbl sc group by sc.studentCourseTblPK.courseId")
List findCountStudentByCourse();
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query(value = "select s.id,s.name,count(sc.studentCourseTblPK.courseId) from StudentCourseTbl sc right join StudentsTbl s on sc.studentCourseTblPK.studentId=s.id group by s.id")
List findCountCourseByStudent();
}
我已经在我的服务方法中使用 @Transactional(Transactional.TxType.REQUIRES_NEW) 来使用 Pessimistic_write 锁执行查询,但即使在事务模式设置为需要新之后,我仍然收到TransactionRequiredException 。我知道我可以通过使用使代码工作我的 getStudentsCountByCourse 方法上的 @Transactional 注释,但我想知道它当前不起作用的原因。
我正在使用 springboot 版本 2.1.7.Release 并使用 mysql 作为数据库
四季花海
相关分类