Miałem do czynienia z tym samym problemem. Podstawową przyczyną była niezgodność między niezerową relacją @ManyToOne a danymi utrwalonymi w tabeli. Miałem to:
@ManyToOne(optional = false)
@JoinColumn(name="batch_id")
private Batch batch;
co oznacza, że identyfikator partii nie może mieć wartości null w żadnym wierszu. Jednak moje wiersze miały wartość null dla klucza obcego batch_id. Po usunięciu opcjonalne =false (co jest oczekiwaną regułą biznesową), findById zaczął działać zgodnie z oczekiwaniami.
Otrzymałem informację z tego wątku:Zmęczyło mnie robienie czegoś z JpaRepository, ale nie mogę znaleźć wiersza za pomocą findById,