使用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()
返回一个空列表?
答案 0 :(得分:0)
如下更新您的save(error
:
errorRepository.saveAndFlush(error);