gpt4 book ai didi

java - 为什么 Hibernate Save 会更新记录?

转载 作者:行者123 更新时间:2023-11-30 03:42:29 26 4
gpt4 key购买 nike

在hibernate中,session.save()应该保存记录。它生成“插入”查询。但是,我编写了下面的简单程序来检查这一点。我观察到 save() 也可以用于更新记录。它正在生成“更新”查询。 save() 不是与下面程序中的 saveorupdate() 执行相同的工作吗?

SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Transaction trans = session.beginTransaction();

Vehicle veh = new Vehicle();
veh.setId(1);
veh.setModel("Veh_mod");
veh.setName("Veh_Name");

Serializable obj = session.save(veh);
veh.setModel("Veh_mod_change");

obj = session.save(veh);

session.flush();
trans.commit();
session.close();

------------------------在控制台中-------------------- -------------

hibernate : /* 插入 com.anvesh.test.Vehicle */插入 进入 车辆 (姓名、型号、ID) 值(value)观 (?,?,?)

hibernate : /* 更新 com.anvesh.test.Vehicle */更新 车辆 放 名称=?, 型号=? 在哪里 ID=?

最佳答案

第一次调用 save() 后,对象 veh 成为附加对象(也称为持久对象状态)。随后使用 setModel() 改变该对象并提交事务将导致 hibernate 触发更新,即使没有再次调用 save() 也是如此。

这里有一个引用示例:http://www.dineshonjava.com/p/transient-persistent-and-detached.html#.VEfGCme8G7E

或者也许是一个简短的视频教程:http://javabrains.koushik.org/tutorials/hibernate_run/Hibernate-Tutorial-22---Transient,-Persistent-and-Detached-Objects.html

关于java - 为什么 Hibernate Save 会更新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26510293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com