H2 ObjectOptimisticLockingFailureException wird nicht geworfen

freddy79

Mitglied
Hallo,
ich würde für den Zugriff auf die DB gerne Optimistic Locking verwenden.

Wenn ich allerdings die Service Methoden mit @Transactional versehe,
wird keine ObjectOptimisticLockingFailureException geworfen, obwohl sich die Version des Entities von der Version in der DB unterscheidet.

Wenn ich @Transactional entferne, wird die ObjectOptimisticLockingFailureException wie gewünscht geworfen.

Ich verwendet Spring Data JPA 1.10.3.


Hier der Beispielcode:

Entity:

Code:
@Entity
@Table(name = "ENTITY")
public class Entity{

       @Id
       @GeneratedValue(strategy = GenerationType.AUTO)
       private Long id;

       @Version
       @Column(name = "VERSION")
       private Long version;

       private String randomValue;
      
       ...
}

Service:

Code:
@Service
public class EntityService {

       @Transactional
       public void update(Long id) {
              Entity entity = entityRepository.findOne(id);
              entity.setVersion(Long.valueOf(-1));
              entity.setRandomValue(RandomStringUtils.random(5));
              entityRepository.save(entity); // Hier sollte ein Fehler geworfen werden
       }
}

Was mache ich falsch?
Danke im voraus.
 

Zurück
Oben