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) 个答案