【问题标题】:Extra sql generated by HibernateHibernate 生成的额外 sql
【发布时间】:2013-09-19 19:21:20
【问题描述】:

我正在尝试使用 session.save 保存对象,如下所示:

beginTransaction();
sessionFactory.getCurrentSession().save(entity);
entity.setName("Entity " + Math.random());
commitTransaction();

生成如下sql:

1)insert into entity
2)update set name = 

为什么即使尽可能晚地刷新更改,它也要生成单独的更新 sql?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    这是预期的 Hibernate 行为,正如 Gavin(hibernate 开发人员之一)here 所解释的那样:

    预期的 Hibernate 行为(我们争论过这是否真的正确!)是 INSERT 语句将准确插入调用 save() 时设置的数据。这为用户提供了更细粒度的控制,尤其是在有触发器等的环境中。但是,如果你不小心,它可能会表现得很糟糕。

    为避免 INSERT-then-UPDATE,只需在保存之前完全初始化对象即可。

    但是,如果您对此不满意(在我的情况下,使用扩展持久性上下文时真的很烦人):Hibernate 3.5.6_final here 有一个补丁可以改变这种行为。

    【讨论】:

      猜你喜欢
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多