2017-04-08 1 views
1

Fehlerprotokolle:org.springframework.transaction.CannotCreateTransactionException: Könnte öffnen Hibernate Session nicht für die Transaktion

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.372 sec <<< FAILURE! 
testCRUDCategory(net.kzn.shoppingbackend.test.CategoryTestCase) Time elapsed: 0.124 sec <<< ERROR! 
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection 
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:542) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:447) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) 
    at com.sun.proxy.$Proxy32.add(Unknown Source) 

HibernateConfig.java

@Configuration 
@ComponentScan(basePackages={"net.kzn.shoppingbackend.dto"}) 
@EnableTransactionManagement 
public class HibernateConfig { 

    // Change the below based on the DBMS you choose 
    private final static String DATABASE_URL = "jdbc:h2:tcp://localhost/~/onlineshopping"; 
    private final static String DATABASE_DRIVER = "org.h2.Driver"; 
    private final static String DATABASE_DIALECT = "org.hibernate.dialect.H2Dialect"; 
    private final static String DATABASE_USERNAME = "sa"; 
    private final static String DATABASE_PASSWORD = ""; 

    // dataSource bean will be available 
    @Bean 
    public DataSource getDataSource() { 

     BasicDataSource dataSource = new BasicDataSource(); 

     // Providing the database connection information 
     dataSource.setDriverClassName(DATABASE_DRIVER); 
     dataSource.setUrl(DATABASE_URL); 
     dataSource.setUsername(DATABASE_USERNAME); 
     dataSource.setPassword(DATABASE_PASSWORD); 


     return dataSource; 

    } 

    // sessionFactory bean will be available 

    @Bean 
    public SessionFactory getSessionFactory(DataSource dataSource) { 

     LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource); 

     builder.addProperties(getHibernateProperties()); 
     builder.scanPackages("net.kzn.shoppingbackend.dto"); 

     return builder.buildSessionFactory(); 

    } 



    // All the hibernate properties will be returned in this method 
    private Properties getHibernateProperties() { 

     Properties properties = new Properties(); 


     properties.put("hibernate.dialect", DATABASE_DIALECT);  
     properties.put("hibernate.show_sql", "true"); 
     properties.put("hibernate.format_sql", "true"); 


     return properties; 
    } 

    // transactionManager bean 
    @Bean 
    public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) { 
     HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory); 
     return transactionManager; 
    } 


} 

Testklasse CategoryTestCase.java

public class CategoryTestCase { 

    private static AnnotationConfigApplicationContext context; 


    private static CategoryDAO categoryDAO; 


    private Category category; 


    @BeforeClass 
    public static void init() { 
     context = new AnnotationConfigApplicationContext(); 
     context.scan("net.kzn.shoppingbackend"); 
     context.refresh(); 
     categoryDAO = (CategoryDAO)context.getBean("categoryDAO"); 
    } 


    @Test 
    public void testAddCategory() { 

     category = new Category(); 

     category.setName("Laptop"); 
     category.setDescription("This is some description for laptop!"); 
     category.setImageURL("CAT_105.png"); 

     assertEquals("Successfully added a category inside the table!",true,categoryDAO.add(category)); 


    } 
} 

Warum ich bekomme Hibernate Session konnte nicht für tra geöffnet werden nsaction; verschachtelte Ausnahme scheint es, alles ist in Ordnung, warum dieser Fehler, den ich immer bin YOu git Hub Code zu seinem gleichen Problem Bitte helfen Sie mir, dem Problem zu lösen, überprüft https://github.com/rustyamigo/online-shopping

+0

Stellen Sie sicher, Die DB-URL ist zusammen mit anderen Parametern korrekt. Die Verbindung zu Ihrer Datenbank wird nicht hergestellt. –

+0

überprüfen Sie es: http://StackOverflow.com/Questions/6965794/Jpa-connection-with-h2-database – Sarkhan

+0

Mögliches Duplikat von [JPA-Verbindung mit H2-Datenbank] (http://StackOverflow.com/Questions/6965794/jpa-Verbindung-mit-h2-Datenbank) – Sarkhan

Antwort

0

Ich habe Ihr Projekt geklont und gefunden Connection is broken: "java.net.ConnectException: Connection refused: localhost" [90067-194]), Sie scheinen den H2-Server nicht gestartet zu haben. Basierend auf Ihrer URL verwenden Sie TCP-Verbindung, dh der Server muss zuerst gestartet werden.

Ich habe einige googeln und fand Sie es durch 2 Wege lösen können:

Sie ein Java-Master-Programm benötigen, das den Server wie folgt beginnen: org.h2.tools.Server.createTcpServer().start(); zB: in Ihrem Test Klassen-> ProductTestCase.java

@BeforeClass 
public static void init() throws Exception { 
    org.h2.tools.Server.createTcpServer().start(); 
    context = new AnnotationConfigApplicationContext(); 
    context.scan("net.kzn.shoppingbackend"); 
    context.refresh(); 
    productDAO = (ProductDAO)context.getBean("productDAO"); 
} 

oder Sie können es manuell vor Start zu Ihrem Verbindungsversuch wie folgt aus: java -cp h2*.jar org.h2.tools.Server

Verwandte Themen