Af en eller anden grund troede jeg, at den implicitte transaktion, entityManager joins, var en ny transaktion. Men Dvaledokumenter a> stat:"Når du opretter en enhedsadministrator i en transaktion, slutter enhedsadministratoren sig automatisk til den aktuelle transaktion."
Så tilsyneladende er der en anden transaktion, der allerede kører (ikke overraskende), og mine henteresultater ændrer sig afhængigt af, hvad den allerede havde læst (fordi databasen kører i REPEATABLE-READ-tilstand.)
På kort sigt vil jeg gennemse min kode for eksplicit at begynde() transaktioner, hvor end det mangler. På længere sigt vil jeg se nærmere på Spring Transactions for at se, hvordan transaktioner administreres på en mere idiotsikker måde (som det blev foreslået i kommentarerne).