Eu estava enfrentando o mesmo problema. A causa raiz foi a incompatibilidade entre a relação @ManyToOne não anulável e os dados persistidos na tabela.
@ManyToOne(optional = false)
@JoinColumn(name="batch_id")
private Batch batch;
o que significa que batch_id não pode ser nulo em nenhuma linha. No entanto, minhas linhas tinham valor nulo para a chave estrangeira batch_id. Após remover optional =false (que é a regra de negócios esperada), findById começou a funcionar conforme o esperado.
Obteve indicação deste tópico:Cansei de fazer algo com JpaRepository Mas não consigo encontrar linha com findById ,