Estaba enfrentando el mismo problema. La causa raíz fue la discrepancia entre la relación @ManyToOne no anulable y los datos persistentes en la tabla. Tenía esto:
@ManyToOne(optional = false)
@JoinColumn(name="batch_id")
private Batch batch;
lo que significa que batch_id no puede ser nulo en ninguna fila. Sin embargo, mis filas tenían un valor nulo para la clave externa batch_id. Después de eliminar opcional =falso (que es la regla comercial esperada), findById comenzó a funcionar como se esperaba.
Obtuve una indicación de este hilo:Me cansé de hacer algo con JpaRepository pero no puedo encontrar la fila con findById,