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:
Service:
Was mache ich falsch?
Danke im voraus.
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.