admin管理员组

文章数量:1277364

I have a reg form. I am using it to save a regform entity and InfoDM entity. InfoDM is called in regProcessService

@PostMapping("/regprocess")
public String regProcessController(@RequestBody RegForm regForm) {
    if (regFormRepository.existsByStudentNameAndCourseName(
            regForm.getStudentName(), regForm.getCourseName()))
        return ("Student already added");
    else {
        enquiryService.saveRegForm(regForm);
        enquiryService.regProcessService(regForm);
    }
    return ("Student registered");
    // return enquiryService.regProcessService(regForm);
}

The problem is enquiryService.saveRegForm(regForm); runs and saves the object to database. Or an error called

.springframework.dao.PessimisticLockingFailureException: could not execute statement [Lock wait timeout exceeded; try restarting transaction] appears

The error page does not fit in the word limit.

.springframework.dao.PessimisticLockingFailureException: could not execute statement [Lock wait timeout exceeded; try restarting transaction] [insert into reg_form (lab_attenderid,lab_attender_name,cdstr,class_end_time,class_start_time,course_end,course_name,course_start,notes,p_appraisal_end_time,p_appraisal_start_date,p_appraisal_start_time,receptionist_name,regidnew,regidold,studentid,student_name,t_appraisal_end_time,t_appraisal_start_date,t_appraisal_start_time,trainerid,trainer_name,venue,w1,w2,w3,w4,w5,w6,w7) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)]; SQL [insert into reg_form (lab_attenderid,lab_attender_name,cdstr,class_end_time,class_start_time,course_end,course_name,course_start,notes,p_appraisal_end_time,p_appraisal_start_date,p_appraisal_start_time,receptionist_name,regidnew,regidold,studentid,student_name,t_appraisal_end_time,t_appraisal_start_date,t_appraisal_start_time,trainerid,trainer_name,venue,w1,w2,w3,w4,w5,w6,w7) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)]
    at .springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:286)
    at .springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244)
    at .springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:560)
    at .springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
    at .springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:343)
    at .springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160)
    at .springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
    at .springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:165)
    at .springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
    at .springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
    at jdk.proxy4/jdk.proxy4.$Proxy126.save(Unknown Source)
    at com.zeptoware.zeptoware.service.impl.EnquiryServiceImpl.saveRegForm(EnquiryServiceImpl.java:71)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at .springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
    at .springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
    at .springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at .springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
    at .springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
    at .springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
    at .springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:727)
    at com.zeptoware.zeptoware.service.impl.EnquiryServiceImpl$$SpringCGLIB$$0.saveRegForm(<generated>)
    at com.zeptoware.zeptoware.controller.ZeptowareController.regProcessController(ZeptowareController.java:44)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at .springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257)
    at .springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190)
    at .springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
    at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986)
    at .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891)
    at .springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at .springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088)
    at .springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978)
    at .springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    at .springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at .springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
    at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
    at .apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
    at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
    at .springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
    at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
    at .springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
    at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
    at .springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    at .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
    at .apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
    at .apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
    at .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
    at .apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
    at .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
    at .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
    at .apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
    at .apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
    at .apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    at .apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
    at .apache.tomcat.util.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
    at .apache.tomcat.util.SocketProcessorBase.run(SocketProcessorBase.java:52)
    at .apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
    at .apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at .apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
    at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: .hibernate.PessimisticLockException: could not execute statement [Lock wait timeout exceeded; try restarting transaction] [insert into reg_form (lab_attenderid,lab_attender_name,cdstr,class_end_time,class_start_time,course_end,course_name,course_start,notes,p_appraisal_end_time,p_appraisal_start_date,p_appraisal_start_time,receptionist_name,regidnew,regidold,studentid,student_name,t_appraisal_end_time,t_appraisal_start_date,t_appraisal_start_time,trainerid,trainer_name,venue,w1,w2,w3,w4,w5,w6,w7) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)]
    at .hibernate.dialect.MySQLDialect.lambda$buildSQLExceptionConversionDelegate$3(MySQLDialect.java:1238)
    at .hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58)
    at .hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
    at .hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197)
    at .hibernate.id.insert.GetGeneratedKeysDelegate.performMutation(GetGeneratedKeysDelegate.java:116)
    at .hibernate.engine.jdbc.mutation.internal.MutationExecutorSingleNonBatched.performNonBatchedOperations(MutationExecutorSingleNonBatched.java:47)
    at .hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor.execute(AbstractMutationExecutor.java:55)
    at .hibernate.persister.entity.mutation.InsertCoordinatorStandard.doStaticInserts(InsertCoordinatorStandard.java:194)
    at .hibernate.persister.entity.mutation.InsertCoordinatorStandard.coordinateInsert(InsertCoordinatorStandard.java:132)
    at .hibernate.persister.entity.mutation.InsertCoordinatorStandard.insert(InsertCoordinatorStandard.java:95)
    at .hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:85)
    at .hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:682)
    at .hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:293)
    at .hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:274)
    at .hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:324)
    at .hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:393)
    at .hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:307)
    at .hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:223)
    at .hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:136)
    at .hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:177)
    at .hibernate.event.internal.DefaultPersistEventListener.persist(DefaultPersistEventListener.java:95)
    at .hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
    at .hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55)
    at .hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127)
    at .hibernate.internal.SessionImpl.firePersist(SessionImpl.java:761)
    at .hibernate.internal.SessionImpl.persist(SessionImpl.java:745)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at .springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:364)
    at jdk.proxy4/jdk.proxy4.$Proxy120.persist(Unknown Source)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at .springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:320)
    at jdk.proxy4/jdk.proxy4.$Proxy120.persist(Unknown Source)
    at .springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:627)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at .springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
    at .springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:277)
    at .springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170)
    at .springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158)
    at .springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:515)
    at .springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:284)
    at .springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:752)
    at

Here is the regProcessService method

@Override
public String regProcessService(RegForm regForm) {
    if (regForm.getCourseName().equals("Digital Marketing")) {
        popuDm.popuDMInfoPages(regForm);
        // popuDm.popuDMCasPages(regForm);
    }
    deleteDataTable();
    return ("Records populated");
}

Here is the service implementation

public void popuDMInfoPages(RegForm regForm) {
    infoForTraineeRepository.InfoDates(
        1, 3, 5, null, null, null, null, regForm.getStudentName());
    List<Date> al =
        infoForTraineeRepository.dataTableValues(regForm.getStudentName());
    System.out.println("Date 1 is " + al.get(0));

    // InfoForTrainee infoForTrainee = new InfoForTrainee();

    // Common for all dates
    infoForTrainee.setTrainerName(regForm.getTrainerName());
    infoForTrainee.setStudentID(regForm.getStudentID());
    infoForTrainee.setStudentName(regForm.getStudentName());
    infoForTrainee.setVenue(regForm.getVenue());
    infoForTrainee.setCourseName(regForm.getCourseName());
    LocalDate localStartDate =
        regForm.getCourseStart()
            .toInstant() // Convert Date to Instant
            .atZone(ZoneId.systemDefault()) // Convert Instant to ZonedDateTime
            .toLocalDate();
    LocalDate localEndDate =
        regForm.getCourseEnd()
            .toInstant() // Convert Date to Instant
            .atZone(ZoneId.systemDefault()) // Convert Instant to ZonedDateTime
            .toLocalDate();
    Period cd = (Period.between(localStartDate, localEndDate));
    String cdstr =
        String.format("%d months and %d days", cd.getMonths(), cd.getDays());
    infoForTrainee.setCdstr(cdstr);
    infoForTraineeRepository.save(infoForTrainee);
    System.out.println("Row added");
}

Why is there a deadlock in the code? I have tried changing code to jdbc INSERT statement. But error remains. Please help me with the basics. I need to understand the error. Main problem is I cant save InfoDM entity. Thanks for all the help.

本文标签: springPostman not stopping execution when there are 2 service methodsStack Overflow