2013-01-07 1 views
12

Come utilizzare la parola chiave 'exists' in Spring Data in un metodo di query?Come utilizzare la parola chiave exists in Spring Data per verificare l'esistenza di un'entità?

mi piacerebbe avere un metodo come questo:

public interface ProfileRepository extends JpaRepository<Profile, Long> { 
    boolean existsByAttribute(String attribute); 
} 

dove Attributo è un campo della profilo.

Una soluzione alternativa è utilizzare custom-implementation. Ma la definizione appendix esiste come parola chiave. Qualcuno potrebbe darmi un esempio su come utilizzare questa parola chiave?

risposta

8

Le parole chiave documentate devono essere utilizzate in combinazione con un riferimento di proprietà. Quindi, la semantica di EXISTS in questo caso è che controlla se la proprietà esiste. Nota che la parte della documentazione è estratta da Spring Data Commons e la parola chiave che viene elencata non significa che sia supportata in Spring Data JPA (indicato nel primo paragrafo della sezione che hai collegato). Exists non è supportato da Spring Data JPA in quanto ha senso solo in MongoDB, ad esempio poiché esiste una differenza tra un campo non presente completamente e il campo disponibile con un valore logicamente null.

Quindi quello che stai cercando sembra essere intorno alla parola chiave (Is)Null con la limitazione attuale che restituirebbe gli oggetti e dovresti controllare l'elenco restituito per il contenuto. C'è un ticket per aggiungere il supporto per le proiezioni per i metodi di query derivati ​​che potresti voler seguire per ulteriori progressi.

+0

non è ancora supportato in quanto la documentazione implica il contrario. Ho controllato i documenti comuni e jpa ed è contenuto in entrambi. – Vadimo

0

Un risultato simile può essere ottenuto utilizzando la funzione Query tramite l'esempio di Spring Data, here è un esempio.

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia – slfan