Stavo affrontando lo stesso problema. La causa principale era la mancata corrispondenza tra la relazione @ManyToOne non annullabile e i dati persistenti nella tabella. Avevo questo:
@ManyToOne(optional = false)
@JoinColumn(name="batch_id")
private Batch batch;
il che significa che batch_id non può essere nullo in nessuna riga. Tuttavia, le mie righe avevano un valore nullo per la chiave esterna batch_id. Dopo aver rimosso optional =false (che è la regola aziendale prevista), findById ha iniziato a funzionare come previsto.
Ho ricevuto indicazioni da questo thread:Sono stanco di fare qualcosa con JpaRepository ma non riesco a trovare la riga con findById ,