gpt4 book ai didi

java - 如何在不更新旧记录的情况下使用 Hibernate session.save() 插入/保存对象

转载 作者:行者123 更新时间:2023-11-29 00:41:58 25 4
gpt4 key购买 nike

我有一个 search.jsp 页面,我可以在其中搜索和检索数据库中的记录。我必须复制这条记录并进行修改并保存这两条记录。

例如:

 method1(){
Response response=new Response();
//To perform DB search
response=delegate.requestSearch(//some request criteria);
Types obj1=(Types) response.getBaseEntity();
Types obj2=obj1;
obj2.setPromaryKeyObject(//some unique value);
}

在我的 DAO 中,保存方法:

session.save(obj1);
session.save(obj2);
transaction.commit(); // transaction

当调试点提交事务时,我只得到一个更新查询。但我希望有两个插入查询。

但这工作正常。这是一次尝试,但这不是我想要做的。

Types tempObj1 = new Types();    
tempObj1.setValue1(obj1.getValue1();
// all values of the object should be set
session.save(tempObj1);
Types tempObj1 = new Types();
tempObj2.setValue1(obj2.getValue1();
// all values of the object should be set
session.save(tempObj2);
transaction.commit(); // transaction

在这种情况下,我触发了两个插入查询。

我很确定错误出在我的 hibernate 方法中,因为我对 Hibernate 还很陌生。当我使用 JDBC 和 MySql 查询时,同样的代码工作正常。

最佳答案

这都是关于 ID 的。如果数据库中存在具有给定 id 的对象,则会更新它。如果没有设置 id 则根据生成策略生成并插入新记录。有时(取决于配置)您必须明确设置 id。

由于您使用 MySQL,我猜您使用 autoincrement 列作为 id 和 IDENTITY 生成策略。您可能需要做的是保留更新记录的 id,并将要插入的新记录的 id 设置为 null

关于java - 如何在不更新旧记录的情况下使用 Hibernate session.save() 插入/保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11899960/

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