用新的Hibernate session.save

时间:2013-11-23 01:16:15

标签: java hibernate

之间是否存在差异:

Object o = new Object();
session.save(o)

session.save(new Object());

我问,因为我发现有时候我的实现中的对象混淆了。差异在生产数据库中找到。所以很难测试。

以下是编辑过的代码:

pubic class Product {
     Logger logger = Logger.getRootLogger();
     private String globalId;


     public void service() {

         this.gobalId = getVariable("GLOBALID"); //from Asterisk
         Transaction tran = null;
         try {
              Session session = HibernateUtil.getCurrentSession();
              int charge=0;
              //set charge
              Transaction tran = session.beginTransaction();
              session.save(new Packet(globalId, charge));
              tran.commit();
         } catch (Exception e) {
              if (tran != null) tran.rollback();
              logger.error("Error", e);
         } finally {
              HibernateUtil.closeCurrentSession();
         }
   }

}

在运行时,我在Packet表中看到具有不同Charge列值的globalId行。 globalId应该是唯一的,即使它不是表中的主键。可能有几个解释:

  • Asterisk在getVariable()方法中为globalId发送了错误的值
  • 服务方法需要同步(Asterisk Java API表示Product类实现为Servlet)

我没有在日志中看到任何错误。因此代码中不会抛出任何异常。

感谢任何帮助。

由于

0 个答案:

没有答案