Hibernate SessionFactory不保存更改

时间:2012-07-25 14:37:38

标签: java spring hibernate

以下代码无提示无法更新数据库。这里没有要报告的错误消息。好像是行“sessionFactory.getCurrentSession()。saveOrUpdate(sn);” (在片段的底部)被忽略了。我做错了什么?

    public String getSerialNumber(String id) {
    log.debug("--------------------------------------------------------------------------------------------Looking for Serial number counter named: " + id);
    SerialNumber sn = (SerialNumber) sessionFactory.getCurrentSession().get(SerialNumber.class, id);
    if (sn == null) {
        //TODO Throw an error (maybe). The code below creates a new Serial number counter
        log.debug("NO Serial Number for: " + id + " was found.");

        sn = new SerialNumber();
        sn.setSerialNumberId(id);
        sn.setName("Unspecified");
        sn.setValue(1);
        log.debug("-----------------------------------------" + sn.toString());
        sessionFactory.getCurrentSession().save(sn);
        log.debug("--------------------------------------------------------------------------------------------Right after SAVE call. This is id --> " + id);
        return "1";
    }

    sn.setValue(sn.getValue()+1);
    log.debug("--update---------------------------------" + sn.toString());
    log.debug("--update---------------------------------" + sn.getValue());
    sessionFactory.getCurrentSession().saveOrUpdate(sn);

    log.debug("--update---------------------------------" + sn.getValue());
    log.debug("--update------------------------------------------------------------------------------------Right after SAVE call. This is id --> " + id);
    return sn.getValue().toString();
}

2 个答案:

答案 0 :(得分:0)

我认为你应该制作一个新对象。复制旧对象中的字段并执行saveorupdate(新对象)

答案 1 :(得分:0)

我认为您的问题是您的更改未提交到数据库。您需要提交事务或关闭会话。

这是一个简单的事务提交

 Session session = sessionFactory.getCurrentSession();
 Transaction tx = session.beginTransaction();

 // your changes

 tx.commit();  // or you can rollback on exceptions