Бях изправен пред същия проблем. Основната причина беше несъответствието между релацията @ManyToOne без нула и данните, запазени в таблицата. Имах това:
@ManyToOne(optional = false)
@JoinColumn(name="batch_id")
private Batch batch;
което означава, че batch_id не може да бъде нула в нито един ред. Въпреки това, моите редове имаха нулева стойност за външен ключ batch_id. След премахването на optional =false (което е очакваното бизнес правило), findById започна да работи според очакванията.
Получих индикация от тази тема:Уморих се да правя нещо с JpaRepository, но не мога да намеря ред с findById ,