Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由Hibernate生成的额外sql_Java_Hibernate - Fatal编程技术网

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有一个补丁可以改变这种行为