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

セッションの更新が延期されている可能性があります。試す:

cs.flush();

これが問題である場合は、プロパティでこれをAUTOに設定できます。

<prop key="org.hibernate.FlushMode">AUTO</prop>
于 2012-07-26T18:39:27.797 に答える
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 に答える