Potýkal jsem se se stejným problémem. Hlavní příčinou byl nesoulad mezi relací @ManyToOne bez možnosti null a daty přetrvávajícími v tabulce. Měl jsem toto:
@ManyToOne(optional = false)
@JoinColumn(name="batch_id")
private Batch batch;
což znamená, že batch_id nemůže být v žádném řádku null. Moje řádky však měly hodnotu null pro cizí klíč batch_id. Po odstranění volitelného =false (což je očekávané obchodní pravidlo) začal findById fungovat podle očekávání.
Mám indikaci z tohoto vlákna:Unavilo mě něco dělat s JpaRepository, ale nemohu najít řádek s findById,