мой контроллер выглядит следующим образом:
@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 даже после установки режима транзакции, требующего нового. Я знаю, что могу заставить код работатьс помощью аннотации @Transactional в моем методе getStudentsCountByCourse, но я хочу знать причину, по которой он не работает в настоящее время.
Я использую Springboot версии 2.1.7. Пожалуйста, используйте mysql в качестве базы данных