Weiß jemand, warum Spring nicht erlaubt, @Lock (LockModeType.PESSIMISTIC_WRITE) auf Leseoperationen zu setzen?Warum Spring erlaubt keine exklusive Sperre auf Lesevorgang?
@Lock(LockModeType.PESSIMISTIC_WRITE)
Human findByNameAndStreet(String name, String street);
Und warum auch EntityManager selbst erlaubt Ihnen, exklusive Sperre auf Lesevorgang setzen?
entityManager.createQuery("select o from Human o where o.name= :name and o.street= :street", Human.class)
.setLockMode(LockModeType.PESSIMISTIC_WRITE).setParameter("name", name).setParameter("street", street).getSingleResult();
Unterm Strich auf der gleichen Auswahlabfrage im Frühjahr kann ich setzen Schreibsperre nicht, und mit EntityManager ich bin in der Lage. Ich weiß nicht wirklich, warum Spring dich nicht dasselbe machen lässt.
Welchen Effekt erwarten Sie von der pessimistischen Schreibsperre? – SpaceTrucker
Zum ausschließlichen Sperren der Lesezeile. Der Code-Fluss ist spezifisch, daher sollte die erste Lese-Transaktion diese Zeile sperren, und die nächsten sollten warten, bis die erste fertig ist. Ich konnte das mit EntityManager implementieren, aber ich würde gerne wissen, warum Spring keine exklusive Sperre für ausgewählte Abfragen zulässt. – alxbxbx
Ich denke, weil Ihre Transaktionsgrenzen falsch (oder nicht) definiert sind. –