gpt4 book ai didi

java - spring-data JpaRepository save() 方法副作用

转载 作者:行者123 更新时间:2023-12-01 12:47:53 24 4
gpt4 key购买 nike

我注意到 save(T entity) 的一个非常奇怪的行为在 spring-data JpaRepository 中。

我有实体 Foo foo我正在尝试使用存储库 fooRepository.save(foo) 保存它.
我的问题是,保存后,foo 的实例我正在传递给 save()方法变了。我不指望这个,我很奇怪我找不到任何与它相关的问题。

这是预期的行为吗?

最佳答案

我们可以通过首先查看 Javadoc for CrudRepository 来尝试了解您的观察结果。 :

Saves a given entity. Use the returned instance for further operations as the save operation might have changed the entity instance completely.



一种可能的解释是,当您保存时,某个其他线程或进程也修改了底层实体。这是 save()方法实际上是:
@Transactional
@Override
public <S extends T> S save(S entity) {

if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity); // <-- this is your use case
}
}

它将调用 em.merge() ,它将返回对数据库中的记录/实体进行的任何新的底层更改。因此,您应该检查看看还有什么可能在后台更新此实体。

关于java - spring-data JpaRepository save() 方法副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60658812/

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