2
@SuppressWarnings("unchecked")
//@Override
public SerialNumber getCounter(String id) {
    Session cs = sessionFactory.getCurrentSession();     
    SerialNumber sn = (SerialNumber) cs.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(0);
    }
    sn.setValue(sn.getValue()+1);
    cs.saveOrUpdate(sn);
    cs.close();
    return sn;
}

此行被忽略并且不向数据库(MySQL)保存任何内容:

cs.saveOrUpdate(sn);

关于为什么的任何想法?我没有头绪。

我绝不是 Java 大师,但即使是这里的 Java 大师也无法弄清楚。任何帮助将不胜感激。

谢谢。

4

2 回答 2

2

尝试

Transaction tx = null;
try{
 tx = session.beginTransaction();
   //your code to save
 tx.commit();
 }catch(Exception ex){
     tx.rollBack();
     ex.printstacktrace(); //log to see if there is any other error
 }
于 2012-07-26T18:34:12.567 回答
2

会话的更新可能会被推迟。尝试:

cs.flush();

如果这是您的问题,您可以在属性中将其设置为 AUTO:

<prop key="org.hibernate.FlushMode">AUTO</prop>
于 2012-07-26T18:39:27.797 回答