正如我们所知,当我们将任何对象传递给此方法时,它Hibernate
有一个非常好的功能SaveOrUpdate,它知道数据将update
被添加或新记录将被添加到数据库中。JOOQ
或者在我的代码中我必须处理这个 功能吗?
问问题
1466 次
2 回答
4
jOOQ 也是如此。如果您更改记录的主键,则它将使用INSERT
,否则将使用UPDATE
。
事实上,当您从数据库中读取一条记录时,调用将按您的预期store()
触发。UPDATE
如果您创建一个新记录,那么它将被INSERT
编辑。
在 2.6 中,克隆一条记录然后让 jOOQ 更新它有点困难(因为克隆会在新实例中设置主键,因此将其标记为“新”-> 插入)。
于 2013-11-15T10:33:44.473 回答
1
如果您从数据库中读取一条记录并调用 record.store(),您将拥有与休眠 saveOrUpdate 方法相同的行为,它可以完美运行!
但是在大多数情况下,您不会从数据库中读取记录,例如,您会从控制器或视图中接收记录,在这种情况下,方法 record.store() 不会更新,即使您有,它也会始终插入设置的id。
现在我正在实现我自己的 saveOrUpdate,通过记录 ID 检查。
public int saveOrUpdate(Record record) {
if(record.getId() != null) {
return record.update();
}
return record.store();
}
于 2015-08-12T19:34:17.253 回答