首页 > 解决方案 > 在 mysql 中使用休眠

问题描述

我按照本教程mykong来使用休眠和 mysql。

我的问题是,当我启动程序时,我得到了这个异常org.hibernate.TransactionException: Transaction not successfully started"

所以我尝试使用session.persist(Object)andsession.flush()而不是session.save(Object)and session.getTransaction().commit()。现在我没有得到任何异常,但对象没有保存在数据库中。日志显示请求

休眠:插入库存(STOCK_CODE,STOCK_NAME)值(?,?)

有人可以帮我吗?

            session = HibernateUtil.getSessionFactory().openSession();

        Stock stock = new Stock();

        stock.setStockCode("4715");
        stock.setStockName("GENM");

        session.persist(stock);

        session.flush();

        session.getTransaction().commit();

        session.close();

标签: javamysqlhibernatepersistence

解决方案


你正在尝试提交一个你甚至还没有开始的事务,因为你错过了

session.beginTransaction();

在你的代码中。

根据上面的网站,您必须启动一个会话,然后在会话中启动事务,进行编辑,将编辑的对象保存到会话中,然后提交事务。您的刷新也会导致问题,因为您在保存或提交之前刷新会话。

    Session session = HibernateUtil.getSessionFactory().openSession();

    session.beginTransaction();
    Stock stock = new Stock();

    stock.setStockCode("4715");
    stock.setStockName("GENM");

    session.save(stock);
    session.getTransaction().commit();

推荐阅读