【问题标题】:using hibernate with mysql在 mysql 中使用休眠
【发布时间】:2018-08-27 10:13:50
【问题描述】:

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

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

所以我尝试使用session.persist(Object)session.flush() 而不是session.save(Object)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();

【问题讨论】:

  • 您还需要提交事务。刷新会话不会提交您的数据。
  • 仍然遇到同样的异常
  • 你能分享你在哪里开始交易和提交交易吗?
  • 我在帖子中添加了代码,但正如我所说,我遵循了 mykong 基础教程。

标签: java mysql hibernate persistence


【解决方案1】:

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

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();

【讨论】:

    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2013-06-19
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多