Java 由Hibernate生成的额外sql
我正在尝试使用会话保存对象。另存为:Java 由Hibernate生成的额外sql,java,hibernate,Java,Hibernate,我正在尝试使用会话保存对象。另存为: beginTransaction(); sessionFactory.getCurrentSession().save(entity); entity.setName("Entity " + Math.random()); commitTransaction(); 生成以下sql语句: 1)insert into entity 2)update set name = 为什么即使在尽可能晚地刷新更改时,它也要生成单独的更新sql?正如Hibernate开
beginTransaction();
sessionFactory.getCurrentSession().save(entity);
entity.setName("Entity " + Math.random());
commitTransaction();
生成以下sql语句:
1)insert into entity
2)update set name =
为什么即使在尽可能晚地刷新更改时,它也要生成单独的更新sql?正如Hibernate开发人员之一Gavin所解释的,这是预期的Hibernate行为: 预期的休眠行为我们已经讨论过这是否真的正确!INSERT语句将完全插入调用save时设置的数据。这为用户提供了更细粒度的控制,特别是在存在触发器等的上下文中。但是,如果您不小心,它可能会执行得很糟糕 为了避免先插入后更新,只需在保存对象之前完全初始化它
但是,如果您对此不满意,在我的情况下,使用扩展持久性上下文时确实很烦人:Hibernate 3.5.6final有一个补丁可以更改此行为。这是预期的Hibernate行为,正如Hibernate开发人员之一Gavin所解释的: 预期的休眠行为我们已经讨论过这是否真的正确!INSERT语句将完全插入调用save时设置的数据。这为用户提供了更细粒度的控制,特别是在存在触发器等的上下文中。但是,如果您不小心,它可能会执行得很糟糕 为了避免先插入后更新,只需在保存对象之前完全初始化它 然而,在我的例子中,如果您对此不满意,那么在使用扩展持久性上下文时,这真的很烦人:Hibernate 3.5.6_final有一个补丁可以改变这种行为