JpaRepository,@ Transaction和repository.saveAndFlush

Nic*_*cek 4 java spring-data-jpa

我正在服务/存储库方法的第一次破解,并遇到了一个问题.基本上我想在我的服务中做的是保持我的实体,然后在同一个Service方法中使用它的ID.

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

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

我发现实体仅在返回Service方法时持久化,即使我在保存实体后立即刷新(或使用saveAndFlush).我认为冲洗会迫使数据库发生变化吗?

小智 8

当你调用save时,Spring-data-jpa返回"future"实体(即带有id),所以:

Foo foo = new Foo();
foo = this.fooRepository.save(foo); // also work on Collections
this.fooRepository.flush();
// use foo.getId();
Run Code Online (Sandbox Code Playgroud)