findAll()为空,但存在findById

时间:2020-06-30 15:08:36

标签: spring-boot hibernate spring-data-jpa

使用SpringBatch,我想在表中注册错误。此时,我正在尝试将它们写入内存数据库的h2中。

以下代码位于SkipListener @Service中。 errorRepository在构造函数中为@Autowired。

@Override
public void onSkipInProcess(Object item, Throwable t) {
    Error error = error(item, t);
    errorRepository.save(error);
    List<Error>     savedErrors = errorRepository.findAll();
    Optional<Error> savedError  = errorRepository.findById(1L);
    System.out.println("findById : " + (savedError.isPresent() ? savedError.get() : "NOT FOUND"));
    System.out.println("findAll  : " + (!savedErrors.isEmpty() ? savedErrors.get(0) : "NOT FOUND"));
}

这是模型:

@Data
@Table
@Entity
@NoArgsConstructor
public class Error {

    @Id
    @Column(name = "ID", nullable = false)
    private long identifier;

    @NonNull
    @Column(name = "MESSAGE", nullable = false)
    private String message;

}

这是日志。

findById : Error(identifier=1, message=TEST WORKS !)
findAll  : NOT FOUND

为什么findById()找到一个结果,但是findAll()返回一个空列表?

1 个答案:

答案 0 :(得分:0)

如下更新您的save(error

   errorRepository.saveAndFlush(error);