Hibernate: Увеличить целочисленное поле

Я хочу увеличить поле в таблице базы данных на 1, используя Hibernate.

Я могу сделать это, просто загрузив объект, увеличивая значение и обновляя объект, однако, если другой поток приходит и обновляет поле между загрузкой и обновлением, значение будет повреждено.

Вместо этого я вызвал обновление непосредственно в базе данных:

Query updateHits = createQuery(
    "UPDATE Job SET hitCount = hitCount + 1 WHERE id = :jobId" );
updateHits.setInteger( "jobId", job.getId() );
updateHits.executeUpdate();

Однако я понимаю, что это обходит оптимистическую блокировку в базе данных, и в настоящее время я испытываю проблему с взаимоблокировками на сервере SQL, и я считаю, что это является виновником.

Есть ли способ увеличить поле без прямого вызова обновления и с сохранением целостности данных?

10
задан Gray 5 March 2013 в 19:08
поделиться