2013-10-07 5 views
6

Я использую данные весны jpa с hibernate в качестве поставщика непрерывности jpa.Как получить счет обновленных записей в данных весны jpa?

Я использую собственные запросы в своем приложении. Есть несколько запросов на обновление, и я хотел бы получить фактическое количество записей, обновленных при выполнении запроса на обновление. Есть ли способ весной данных jpa сделать это?

В настоящее время я придерживаюсь нижеследующего подхода;

@Modifying 
@Query(value="update table x set x_provision = ?1 where x_id = ?2", nativeQuery=true) 
int updateProvision(Integer provision, Integer id); 

@Transactional добавлен на сервисном уровне.

Проблема в том, что когда таблица обновляется, я получаю счет как 1. Но есть случаи, когда строки не обновляются. В этом случае также я получаю счет как 1. Но я хотел бы получить фактическое количество обновленных записей, которое иногда равно 0.

Может ли кто-нибудь сообщить мне, если я что-то не так здесь делаю?

+0

Любая помощь в этом отношении высоко ценится. – cyclecount

ответ

3

Если вы посмотрите на ModifyingExecutor, который используется для выполнения этого запроса

@Override 
    protected Object doExecute(AbstractJpaQuery query, Object[] values) { 

     int result = query.createQuery(values).executeUpdate(); 

     if (em != null) { 
      em.clear(); 
     } 

     return result; 
    } 

Чем вы видите, это только делегат на родную JPA инфраструктуру, возвращает количество обновленных элементов.

Это может быть связано с используемой базой данных или конфигурацией фреймворка ORM, иначе, чем этот запрос, который вы написали, должен возвращать правильный результат.

+0

Разве это не JpaQueryExecution? – AdrianX

Смежные вопросы