gpt4 book ai didi

java - JpaRepository、@Transaction 和 repository.saveAndFlush

转载 作者:搜寻专家 更新时间:2023-11-01 01:22:44 25 4
gpt4 key购买 nike

我第一次尝试使用服务/存储库方法,但遇到了一个问题。本质上,我想在我的服务中做的是持久化我的实体,然后在相同的服务方法中使用它的 ID。

最初我打算使用 @GeneratedValue 和 Sequences 但放弃并决定手动刷新实体并获取 ID,我认为这会更容易。

My Repository 是一个使用 Spring Data 的接口(interface),因此它支持手动刷新。据我了解,它还带有@Transactional 注释。我的服务方法也用@Transactional 注释。

我发现实体仅在服务方法返回时保留,即使我在保存实体后立即刷新(或使用 saveAndFlush)也是如此。我认为刷新会强制更改数据库?

最佳答案

当您调用保存时,Spring-data-jpa 返回“ future ”实体(即带有 id),因此:

Foo foo = new Foo();
foo = this.fooRepository.save(foo); // also work on Collections
this.fooRepository.flush();
// use foo.getId();

关于java - JpaRepository、@Transaction 和 repository.saveAndFlush,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122489/

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