我遵循了本教程mykong的要求,以便在MySQL中使用休眠模式。
我的问题是,当我启动程序时,出现此异常 org.hibernate.TransactionException:事务未成功启动” 。
因此,我尝试使用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();
答案 0 :(得分: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();