2013-10-07 5 views
6

Używam danych sprężynowych jpa ze stanem hibernacji jako dostawcą utrwalacza jpa.Jak zdobyć liczbę zaktualizowanych zapisów w danych wiosennych jpa?

Używam natywnych zapytań w mojej aplikacji. Istnieje kilka zapytań o aktualizację i chciałbym, aby zaktualizowana faktyczna liczba rekordów została wykonana po wykonaniu kwerendy aktualizacji. Czy jest na to jakiś sposób na wiosnę danych jpa?

Obecnie stosuję się do poniższego podejścia;

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

@ Transakcja jest dodawana do warstwy usługi.

Problem polega na tym, że gdy tabela jest aktualizowana, liczę jako 1. Są jednak przypadki, w których nie są aktualizowane żadne wiersze. W tym przypadku również otrzymuję liczbę jako 1. Ale chciałbym otrzymać aktualną liczbę zaktualizowanych rekordów, która czasami wynosi 0.

Czy ktoś może dać mi znać, jeśli robię coś złego tutaj?

+0

Każda pomoc w tym zakresie jest bardzo ceniona. – cyclecount

Odpowiedz

3

Jeśli przyjrzeć ModifyingExecutor, który jest używany do wykonania tego zapytania

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

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

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

     return result; 
    } 

Niż widać, to tylko delegatów na rodzimej infrastruktury JPA, aby powrócić liczbę zaktualizowanych elementów.

Sot ten może mieć związek z używaną konfiguracją bazy danych lub ORM, inne, niż to zapytanie, które napisałeś, powinno zwrócić poprawny wynik.

+0

Czy to nie jest JpaQueryExecution? – AdrianX