2013-04-27 12 views
14

Assunta Ho il seguente HQLusando Hibernate nome parametro due volte

EntityManager.createQuery("SELECT a FROM a WHERE a.b = :par OR a.c = :par").setParameter("par", obj); 

sembra non funzionare. Qualcuno ha un'idea su come risolvere questo problema usando solo un parametro?

+0

Che errore ottieni? –

+0

Nessun errore. La lista dei risultati è vuota. – DmiN

+0

hai dati validi? prova ad abilitare - showsql = true in persistence.xml e ottenere lo sql raw – Sanath

risposta

20
setParameter(String name,Object val) 

Questo è utilizzato per associare un valore al parametro denominato. Ma un nome può verificarsi più volte in una query che non ha importanza. Quindi controlla una volta se hai veramente dati per quella query.

controllo della documentazione here

Alcuni testo principale da quella documentazione

parametri di query con nome sono segni di forma: nome nella stringa di query. Un valore è associato al parametro intero: pippo chiamando setParameter ("foo", foo, Hibernate.INTEGER); per esempio. Un nome può apparire più volte nella stringa di query.

Se ancora u non si ottiene il risultato poi basta provare con l'utilizzo di due nomi e la mise

EntityManager.createQuery ("SELECT FROM WHERE ab =: par1 o AC =: PAR2") .setParameter ("par1", obj) .setParameter ("par2", obj);

+0

Beh, questo è completamente giusto. Sembra che la query fosse un po 'rotta. Il DBMS ha un elenco di risultati vuoto tramite sql nativo. +1 Per questa buona descrizione – DmiN