有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法修复TransactionRequiredException:没有实际事务可用的EntityManager

我正面临

javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call

例外,我已经尝试了StackOverflow中的大多数选项,但是仍然发生了此错误,您能告诉我是否做错了什么吗?这是我的密码:

应用程序类别:

@SpringBootApplication
@ComponentScan(basePackages = { "com.gide.iis.bls" })
public class ServerCoreApiApplication {

    private static ApplicationContext context;

    public static void main(String[] args) {
        System.out.println("Application starting.........");
        context = SpringApplication.run(ServerCoreApiApplication.class, args);
        Bls s = (Bls) context.getBean("bls");
        s.start();
        System.out.println("Application started...");
    }

    @Bean
    public DispatcherServlet dispatcherServlet() {
        DispatcherServlet dispatchServlet = new DispatcherServlet();
        return dispatchServlet;
    }

    @Bean
    public ServletRegistrationBean<HttpServlet> servletRegistrationBean() {
        ServletRegistrationBean<HttpServlet> servRegBean = new ServletRegistrationBean<>();
        servRegBean.setServlet(dispatcherServlet());
        servRegBean.setLoadOnStartup(1);
        servRegBean.addUrlMappings("/service/*");

        return servRegBean;
    }

}

服务和存储库类存在于另一个项目中,我将其包含在Spring Boot app中,并编写了配置文件来为它们创建bean:

服务类别:

@Transactional
public class LoggingService implements ILoggingService {
. //Some code
.
.
    @Transactional
    public final LogMessage createLogMessage( final LogMessage pLogMessage ) throws LoggingException {
      ..
      .. //Some Code.
      logMessageRepository.persist(logMessageEntity); //Calling persist of repository.
   }
}

我的日志消息存储库类扩展了一个名为JpaGenericRepository的抽象类,它实现了persist方法,但它存在于jar中, 抽象类持久化方法是:

@Override
    public E persist(final E pEntity) throws RepositoryException {
        CheckArg.notNull("pEntity", pEntity);
        System.out.println("Entity hash Code: " + entityManager.hashCode());
        entityManager.persist(pEntity);


        entityManager.flush();
        return pEntity;
    }

实体管理器在抽象类中声明为:

@PersistenceContext 受保护的实体管理器实体管理器

我尝试了@Transactional、@EnableTransactionManagement和其他几个选项,但失败了。 请帮忙。如果你有任何问题,请问我


共 (0) 个答案