Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query
- at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:413)
- at org.springframework.orm.hibernate5.HibernateExceptionTranslator.translateExceptionIfPossible(HibernateExceptionTranslator.java:55)
- at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
- at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
- at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
- at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
- at com.sun.proxy.$Proxy39.deleteWalletInfoById(Unknown Source)
- at mobi.puut.services.WalletServiceImpl.deleteWalletInfoById(WalletServiceImpl.java:279)
- at mobi.puut.controllers.WalletRestController.deleteWalletInfoById(WalletRestController.java:83)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
- at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
- at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
- at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
- at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
- at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
- at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
- at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
- at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
- at org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:894)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:667)
- at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
- at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
- at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
- at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
- at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
- at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
- at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
- at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
- at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
- at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
- at java.lang.Thread.run(Thread.java:748)
- Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query
- at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1496)
- at mobi.puut.database.WalletInfoDaoHibernate.deleteWalletInfoById(WalletInfoDaoHibernate.java:83)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
- at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
- ... 44 more
- Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query
- at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1496)
- at mobi.puut.database.WalletInfoDaoHibernate.deleteWalletInfoById(WalletInfoDaoHibernate.java:83)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- @Entity
- @Table(name = "wallet_info")
- public class WalletInfo {
- @Id
- @Column(name = "id")
- @NotNull
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
- @NotNull
- @Column(name = "name")
- private String name;
- @NotNull
- @Column(name = "address")
- private String address;
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- }
- @Configuration
- @EnableWebMvc
- @EnableTransactionManagement
- @ComponentScan(basePackages = {"mobi.puut.controllers"})
- class ApplicationConfiguration extends WebMvcConfigurerAdapter {
- @Override
- public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
- configurer.enable();
- }
- @Bean
- public InternalResourceViewResolver jspViewResolver() {
- InternalResourceViewResolver bean = new InternalResourceViewResolver();
- bean.setPrefix("/WEB-INF/jsps/");
- bean.setSuffix(".jsp");
- return bean;
- }
- @Bean
- public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
- JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(emf);
- return transactionManager;
- }
- @Bean
- public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
- return new PersistenceExceptionTranslationPostProcessor();
- }
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/static/**").addResourceLocations("/resources/");
- }
- // @Bean(name = "multipartResolver")
- // public CommonsMultipartResolver getMultipartResolver() {
- // return new CommonsMultipartResolver();
- // }
- // @Bean
- // public MultipartResolver multipartResolver() {
- // CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
- // multipartResolver.setMaxUploadSize(5242880);
- // return multipartResolver;
- // }
- // @Bean(name = "messageSource")
- // public ReloadableResourceBundleMessageSource getMessageSource() {
- // ReloadableResourceBundleMessageSource resource = new ReloadableResourceBundleMessageSource();
- // resource.setBasename("classpath:messages");
- // resource.setDefaultEncoding("UTF-8");
- // return resource;
- // }
- // @Bean
- // public InternalResourceViewResolver htmlViewResolver() {
- // InternalResourceViewResolver bean = new InternalResourceViewResolver();
- // bean.setPrefix("/WEB-INF/html/");
- // bean.setSuffix(".html");
- // bean.setOrder(2);
- // return bean;
- // }
- }
- @Configuration
- @EnableWebMvc
- @EnableTransactionManagement
- @ComponentScan(basePackages = {"mobi.puut.database"})
- public class DatabaseConfig {
- @Bean
- public LocalSessionFactoryBean sessionFactory() {
- LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
- sessionFactory.setDataSource(dataSource());
- sessionFactory.setPackagesToScan(
- new String[]{"com.form.handler.entities"});
- sessionFactory.setHibernateProperties(hibernateProperties());
- return sessionFactory;
- }
- // @Bean
- // public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
- //
- // LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
- // em.setDataSource(dataSource());
- //
- // em.setPackagesToScan(new String[]{"com.form.handler.entities"});
- //
- // JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
- // em.setJpaVendorAdapter(vendorAdapter);
- //
- // // set the hibernate properties for the project
- // em.setJpaProperties(hibernateProperties());
- //
- // return em;
- // }
- @Bean
- @Autowired
- public HibernateTransactionManager transactionManager(
- SessionFactory sessionFactory) {
- HibernateTransactionManager txManager
- = new HibernateTransactionManager();
- txManager.setSessionFactory(sessionFactory);
- return txManager;
- }
- @Bean
- public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
- return new PersistenceExceptionTranslationPostProcessor();
- }
- @Bean
- public DataSource dataSource() {
- DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
- // dataSource.setUrl("jdbc:mysql://localhost:3306/wallet?createDatabaseIfNotExist=true");
- dataSource.setUrl("jdbc:mysql://localhost:3306/wallet1");
- dataSource.setUsername("testuser");
- dataSource.setPassword("testpassword");
- return dataSource;
- }
- Properties hibernateProperties() {
- Properties properties = new Properties();
- // properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
- properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
- return properties;
- }
- }
- @Configuration
- @EnableWebMvc
- @ComponentScan(basePackages = {"mobi.puut.services"})
- public class ServiceConfig {
- }
- public class WebInitializer implements WebApplicationInitializer {
- public void onStartup(ServletContext container) throws ServletException {
- AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
- ctx.register(ApplicationConfiguration.class, ServiceConfig.class,
- DatabaseConfig.class);
- ctx.setServletContext(container);
- // Manage the lifecycle of the root application context
- container.addListener(new ContextLoaderListener(ctx));
- ServletRegistration.Dynamic servlet = container.addServlet("dispatcher-servlet", new DispatcherServlet(ctx));
- servlet.setLoadOnStartup(1);
- servlet.addMapping("/");
- }
- // @Override
- // public void onStartup(ServletContext container) {
- // // Create the 'root' Spring application context
- // AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
- // rootContext.register(ServiceConfig.class, JPAConfig.class, SecurityConfig.class);
- //
- // // Manage the lifecycle of the root application context
- // container.addListener(new ContextLoaderListener(rootContext));
- //
- // // Create the dispatcher servlet's Spring application context
- // AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext();
- // dispatcherServlet.register(MvcConfig.class);
- //
- // // Register and map the dispatcher servlet
- // ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherServlet));
- // dispatcher.setLoadOnStartup(1);
- // dispatcher.addMapping("/");
- //
- // }
- }
- @Service
- @Transactional
- public class WalletServiceImpl implements WalletService {
- @Autowired
- private UserDao userDao;
- @Autowired
- private StatusDao statusDao;
- @Autowired
- private WalletInfoDao walletInfoDao;
- @Override
- public void deleteWalletInfoById(Long id) {
- walletInfoDao.deleteWalletInfoById(id);
- }
- }
- @Repository
- public class WalletInfoDaoHibernate
- extends HibernateDaoSupport
- implements WalletInfoDao {
- @Override
- public void deleteWalletInfoById(Long id) {
- try (Session session = getSessionFactory().openSession()) {
- Query query = session.createQuery("delete WalletInfo where id = :id");
- query.setParameter("id", id);
- int result = query.executeUpdate();
- System.out.println("Result = " + result);
- } catch (HibernateException e) {
- System.out.println("No result");
- e.printStackTrace();
- }
- }
- }
- // delete a wallet with the Id
- @RequestMapping(value = "/delete/{id}", method = RequestMethod.DELETE)
- public ResponseEntity<WalletInfo> deleteWalletInfoById(@PathVariable("id") long id) {
- WalletInfo walletInfo = walletService.getWalletInfo(id);
- if (walletInfo == null) {
- System.out.println("The WalletInfo obj with id = " + id + " is not found");
- return new ResponseEntity<WalletInfo>(HttpStatus.NOT_FOUND);
- }
- walletService.deleteWalletInfoById(id);
- return new ResponseEntity<WalletInfo>(HttpStatus.NO_CONTENT);
- }
- @Override
- public void deleteWalletInfoById(Long theId) {
- // get the current hibernate session
- Session currentSession = getSessionFactory().getCurrentSession();
- // delete object with primary key
- Query theQuery =
- currentSession.createQuery("delete WalletInfo where id=:walletId");
- theQuery.setParameter("walletId", theId);
- theQuery.executeUpdate();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement