Igen, már tapasztaltam. :) Nemrég megkérdeztem máshogy. Erre eléggé mást válaszolt:
Igen, ha egy tranzakcióban futtatja az
em.find(ControlTable.class, "PROCESS_CONTROL", LockModeType.PESSIMISTIC_WRITE)
metódust, akkor a lock csak a tranzakció végén kerül érvényesítésre, amikor a tranzakció commit-olódik. A lockot addig tartja a JPA, hogy a tranzakció lefutása során ne lehessen más tranzakcióknak hozzáférni az adatokhoz.
Mondjuk még ez is félreérthető volt, így még egyszer rákérdezve már azt a választ adta, hogy amikor kiadjuk a find-ot, akkor direktbe bekérdez a DB-be. Nem használja a cache-t, mert lock is van a metódus hívásban. És attól kezdődően él a lock a DB szinten is a tranzakció végéig.