简体   繁体   English

org.springframework.transaction.CannotCreateTransactionException:无法打开Hibernate Session进行事务处理

[英]org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction

Error Logs: 错误日志:

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 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;
    }


}

Test Class CategoryTestCase.java 测试类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));


    }
}

why I am getting Could not open Hibernate Session for transaction; 为什么我得到无法打开Hibernate会话进行交易; nested exception , it seems everything is fine to why this error i am getting YOu can check git Hub code too its same issue kindly help me to solve the issue https://github.com/rustyamigo/online-shopping 嵌套异常,似乎一切都很好,为什么这个错误我得到你可以检查git Hub代码也同样的问题请帮助我解决问题https://github.com/rustyamigo/online-shopping

I have cloned your project and found Connection is broken: "java.net.ConnectException: Connection refused: localhost" [90067-194]) ,You seem not to have started the H2 server. 我克隆了你的项目,发现Connection is broken: "java.net.ConnectException: Connection refused: localhost" [90067-194]) ,你似乎没有启动H2服务器。 Based on your URL, you're using tcp connection, ie the server has to be started first. 根据您的URL,您使用的是tcp连接,即必须先启动服务器。

I have some googling and found you can solve it by 2 ways: 我有一些谷歌搜索,发现你可以通过两种方式解决它:

you need a java master program which start the server like this: org.h2.tools.Server.createTcpServer().start(); 你需要一个启动服务器的java主程序,如下所示: org.h2.tools.Server.createTcpServer().start(); eg: in your test class-> ProductTestCase.java 例如:在您的测试类 - > 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");
}

or you could start it manually prior to your connection attempt like this: java -cp h2*.jar org.h2.tools.Server 或者您可以在连接尝试之前手动启动它,如下所示: java -cp h2*.jar org.h2.tools.Server

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 请求处理失败; 嵌套异常是 org.springframework.transaction.CannotCreateTransactionException - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException CannotCreateTransactionException:无法打开休眠会话进行事务 - CannotCreateTransactionException: Could not open Hibernate Session for transaction org.springframework.transaction.CannotCreateTransactionException ::在org.springframework.orm.jpa.JpaTransactionManager.doBegin上找不到命令 - org.springframework.transaction.CannotCreateTransactionException:: command not found at org.springframework.orm.jpa.JpaTransactionManager.doBegin CannotCreateTransactionException:无法打开事务的Hibernate会话(Hibernate,MySQL,MVC) - CannotCreateTransactionException: Could not open Hibernate Session for transaction(Hibernate, MySQL, MVC) SpringMVC和Hibernate:CannotCreateTransactionException:无法打开Hibernate Session进行事务处理; - SpringMVC & Hibernate : CannotCreateTransactionException: Could not open Hibernate Session for transaction; 首次登录:HTTP状态500-请求处理失败; 嵌套的异常是org.springframework.transaction.CannotCreateTransactionException - First Login: HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException 长时间发送请求后获取org.springframework.transaction.CannotCreateTransactionException - Getting org.springframework.transaction.CannotCreateTransactionException when sending a request after long time 休眠会话无法打开进行交易 - Hibernate Session Could not open for transaction 无法打开 Hibernate Session 进行事务; 嵌套异常是 org.hibernate.exception.JDBCConnectionException:无法打开连接 - Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Could not open connection 首次登录时无法为事务打开休眠会话 - Could not open Hibernate Session for transaction on First Login
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM