2013-10-07 12 views
6

Utilizzo i dati di primavera jpa con la sospensione come provider di persistenza jpa.Come ottenere il conteggio dei record aggiornati in primavera dati jpa?

Sto utilizzando query native nella mia applicazione. Esistono alcune query di aggiornamento e vorrei ottenere il numero effettivo di record aggiornati quando viene eseguita la query di aggiornamento. C'è un modo in primavera dati jpa per fare questo?

Attualmente sto seguendo l'approccio seguente;

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

@Transazionale viene aggiunto sul livello di servizio.

Il problema qui è che quando si aggiorna la tabella ottengo il conteggio come 1. Ma ci sono alcuni casi in cui nessuna riga viene aggiornata. Anche in questo caso ottengo il conteggio come 1. Ma mi piacerebbe ricevere il numero effettivo di record aggiornati che a volte è 0.

Qualcuno può farmi sapere se sto facendo qualcosa di sbagliato qui?

+0

Qualsiasi aiuto è molto apprezzato. – cyclecount

risposta

3

Se si dà un'occhiata a ModifyingExecutor, che viene utilizzato per eseguire questa query

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

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

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

     return result; 
    } 

Than che si vede, è solo delega alle infrastrutture APP nativa, al numero di elementi aggiornati tornare.

Sot questo potrebbe avere a che fare con il database utilizzato o la configurazione del framework ORM, altro, rispetto a quella query che hai scritto dovrebbe restituire il risultato corretto.

+0

Non è questa JpaQueryExecution? – AdrianX

Problemi correlati