0

Ich steckte mit Hibernate Session Problem. Problem tritt auf, wenn ich versuche, Abfrage auszuführen wieKann keine Transaktion erstellen [Spring Boot + Ruhezustand]

getHibernateTemplate().find("from ApplicationConfiguration where type = ? and key = ?", type, key); 

Frühling Boot-Protokolle zeigen, dass Hibernate erfolgreich gefunden Tabellen in einer Basispaket. Dies ist meine Konfiguration

package com.project.name; 


import com.mchange.v2.c3p0.ComboPooledDataSource; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.core.env.Environment; 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.orm.hibernate4.HibernateTemplate; 
import org.springframework.orm.hibernate4.HibernateTransactionManager; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBean; 

import java.util.Properties; 

@Configuration 
@ComponentScan(basePackages = "com.project.name") 
@PropertySource(value = { "classpath:application.properties"}) 
public class PersistenceConfiguration { 


    //HIBERNATE 
    private static final String HIBERNATE_DIALECT = "hibernate.dialect"; 
    private static final String HIBERNATE_SHOW_SQL = "hibernate.show_sql"; 
    private static final String SCHEMA_STRATEGY = "hibernate.hbm2ddl.auto"; 
    private static final String HIBERNATE_MAPPING_CLASSPATH = "com/project/name/hibernate.cfg.xml"; 
    private static final String NEW_GENERATOR_MAPPINGS = "hibernate.id.new_generator_mappings"; 
    private static final String IDENTIFIER_ROLLBACK = "hibernate.use_identifier_rollback"; 
    private final String BASE_PACKAGE = "com.project.name.domain"; 

    //C3P0 
    private final String C3P0_MAX_SIZE = "c3p0.max_size"; 
    private final String C3P0_MIN_SIZE = "c3p0.min_size"; 
    private final String C3P0_ACQUIRE_INCREMENT = "c3p0.acquire_increment"; 
    private final String C3P0_IDLE_TEST_PERIOD = "c3p0.idle_test_period"; 
    private final String C3P0_MAX_STATEMENTS = "c3p0.max_statements"; 
    private final String C3P0_MAX_IDLE_TIME = "c3p0.max_idle_time"; 
    private final String C3P0_URL = "c3p0.url"; 
    private final String C3P0_USERNAME = "c3p0.username"; 
    private final String C3P0_PASSWORD = "c3p0.password"; 
    private final String C3P0_DRIVER_CLASSNAME = "c3p0.driverClassName"; 

    @Autowired 
    Environment environment; 


    @Bean 
    Properties getHibernateProperties(){ 
     Properties props = new Properties(); 
     props.setProperty(HIBERNATE_DIALECT, environment.getProperty(HIBERNATE_DIALECT)); 
     props.setProperty(HIBERNATE_SHOW_SQL, environment.getProperty(HIBERNATE_SHOW_SQL)); 
     props.setProperty(SCHEMA_STRATEGY, environment.getProperty(SCHEMA_STRATEGY)); 
     props.setProperty(NEW_GENERATOR_MAPPINGS, environment.getProperty(NEW_GENERATOR_MAPPINGS)); 
     props.setProperty(IDENTIFIER_ROLLBACK, environment.getProperty(IDENTIFIER_ROLLBACK)); 
     return props; 
    } 

    @Bean 
    public HibernateTemplate hibernateTemplate() throws Exception { 
     return new HibernateTemplate(sessionFactory().getObject()); 
    } 

    @Bean 
    public HibernateTransactionManager transactionManager() throws Exception { 
     return new HibernateTransactionManager(sessionFactory().getObject()); 
    } 

    @Bean 
    public LocalSessionFactoryBean sessionFactory() throws Exception { 
     LocalSessionFactoryBean bean = new LocalSessionFactoryBean(); 
     bean.setDataSource(dataSource()); 
     bean.setPackagesToScan(BASE_PACKAGE); 
     bean.setHibernateProperties(getHibernateProperties()); 
     return bean; 
    } 



    @Bean 
    ComboPooledDataSource dataSource() throws Exception { 
     ComboPooledDataSource dataSource = new ComboPooledDataSource(); 

     dataSource.setMaxPoolSize(Integer.parseInt(environment.getProperty(C3P0_MAX_SIZE))); 
     dataSource.setMinPoolSize(Integer.parseInt(environment.getProperty(C3P0_MIN_SIZE))); 
     dataSource.setAcquireIncrement(Integer.parseInt(environment.getProperty(C3P0_ACQUIRE_INCREMENT))); 
     dataSource.setIdleConnectionTestPeriod(Integer.parseInt(environment.getProperty(C3P0_IDLE_TEST_PERIOD))); 
     dataSource.setMaxStatements(Integer.parseInt(environment.getProperty(C3P0_MAX_STATEMENTS))); 
     dataSource.setMaxIdleTime(Integer.parseInt(environment.getProperty(C3P0_MAX_IDLE_TIME))); 
     dataSource.setJdbcUrl(environment.getProperty(C3P0_URL)); 
     dataSource.setPassword(environment.getProperty(C3P0_PASSWORD)); 
     dataSource.setUser(environment.getProperty(C3P0_USERNAME)); 
     dataSource.setDriverClass(environment.getProperty(C3P0_DRIVER_CLASSNAME)); 
     return dataSource; 
    } 

} 

Geben

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.NullPointerException 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:544) ~[spring-orm-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-4.3.0.RELEASE.jar:4.3.0.RELEASE] 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:427) ~[spring-tx-4.3.0.RELEASE.jar:4.3.0.RELEASE] 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:276) ~[spring-tx-4.3.0.RELEASE.jar:4.3.0.RELEASE] 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.0.RELEASE.jar:4.3.0.RELEASE] 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) ~[spring-aop-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) ~[spring-aop-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at com.sun.proxy.$Proxy135.getConfigurationValueByTypeAndKey(Unknown Source) ~[na:na] 
    at com.project.name.LoginView.prepareContent(LoginView.java:237) ~[web-3.0.jar:na] 
    at com.project.name.LoginView.<init>(LoginView.java:36) ~[web-3.0.jar:na] 
    at com.project.name.nameMain.goToLogin(nameMain.java:125) ~[web-3.0.jar:na] 
    at com.project.name.HomeView$4.buttonClick(HomeView.java:84) ~[web-3.0.jar:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_91] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91] 
    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1008) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.ui.Button.fireClick(Button.java:377) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.ui.Button$1.click(Button.java:54) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_91] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91] 
    at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118) ~[vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:408) [vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:273) [vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:79) [vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) [vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1409) [vaadin-server-7.6.7.jar:7.6.7] 
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:364) [vaadin-server-7.6.7.jar:7.6.7] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:281) [spring-boot-actuator-1.3.6.RELEASE.jar:1.3.6.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:115) [spring-boot-actuator-1.3.6.RELEASE.jar:1.3.6.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103) [spring-boot-actuator-1.3.6.RELEASE.jar:1.3.6.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91] 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.0.36.jar:8.0.36] 
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91] 
Caused by: java.lang.NullPointerException: null 
    at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:76) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:118) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.reset(TransactionCoordinatorImpl.java:130) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.engine.transaction.internal.TransactionCoordinatorImpl.<init>(TransactionCoordinatorImpl.java:94) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.internal.SessionImpl.<init>(SessionImpl.java:258) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1589) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.internal.SessionFactoryImpl.openSession(SessionFactoryImpl.java:999) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:436) ~[spring-orm-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    ... 84 common frames omitted 

Wenn Informationen fehlen - bitte sagen.

Antwort

2

Versuchen Sie @EnableTransactionManagement Anottation in Ihrer PersistenceConfiguration-Klasse hinzuzufügen.

und ändern Transaktionsmanager Bohne mit diesem coide:

@Bean 
public HibernateTransactionManager transactionManager(SessionFactory s) { 
     HibernateTransactionManager txManager = new HibernateTransactionManager(); 
     txManager.setSessionFactory(s); 
     return txManager; 
} 
+0

Dank für die Antwort. Hinzugefügt @EnableTransactionManagement und geändert Transaktionsmanager wie Sie vorgeschlagen, aber immer noch das gleiche Problem – addmeaning

+0

Ich weiß nicht, ob dies lösen wird, aber versuchen, die Bean HibernateTemplate zu entfernen, wird die Verwendung nicht empfohlen: [link] (http: // stackoverflow.com/questions/18002768/why-hibernatetemplate-isnt-recommended) –

0

Sieht so aus, als ob der TransactionManager nicht erstellt wird, überprüfen Sie, ob alle relevanten Eigenschaften, die Sie injizieren, injiziert werden.

Verwandte Themen