@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大师也无法弄明白。任何帮助将不胜感激。
感谢。
答案 0 :(得分: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
}
答案 1 :(得分:2)
可能会延迟会话的更新。尝试:
cs.flush();
如果这是您的问题,您可以在属性中将其设置为自动:
<prop key="org.hibernate.FlushMode">AUTO</prop>