2017-03-06 7 views
2

hier meine HQL-Abfrage ist:Java: Parameter existieren nicht als benannte Parameter

buffer = new StringBuilder(); 
buffer.append("SELECT R "); 
buffer.append("FROM " + getEntityClassName() + " R "); 
buffer.append("LEFT JOIN E.debit D "); 
buffer.append("LEFT JOIN E.etablissement E "); 
buffer.append("WHERE D.id = :idDebit "); 
buffer.append("ORDER BY R.periodeDebut DESC "); 

hqlQuery = session.createQuery(buffer.toString()); 
hqlQuery.setInteger("idDebit", idDebit); 

ich diesen Fehler hätte:

java.lang.IllegalArgumentException: Parameter idDebit does not exist as a named parameter in [SELECT R FROM fr.gouv.finances.douane.gimt.dao.base.commun.impl.DebitReventeDaoImpl R LEFT JOIN E.debit D LEFT JOIN E.etablissement E WHERE D.id = :idDebit ORDER BY R.periodeDebut DESC ] 

Wenn ich den setInteger von setParameter("idDebit", idDebit) ändern, ich erhielt Dieser Fehler:

org.hibernate.QueryParameterException: could not locate named parameter [idDebit] 

wenn ich es auch so ändern:

WHERE D.id = ? 
setParameter(0, idDebit) 

Ich habe diesen Fehler:

org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1 

Dankten für Ihre Hilfe

+0

ich es versucht habe, habe ich den gleichen Fehler: 'code'Position über die Anzahl der deklarierten ordinalen Parameter hinaus. Denken Sie daran, dass Ordinalparameter 1-basiert sind! Position: 2 – Pasja95

+1

fr.gouv.finances.douane.gimt.dao.base.commun.impl.DebitReventeDaoImpl .. ist das eine Entität? Wenn ja, fügen Sie bitte den impl Code –

+0

Thanks @MaciejKowalski, die Entität ist DebitReventeMod, ich ändern es und es funktioniert – Pasja95

Antwort

0
setParameter(0, idDebit) 

Wechsel zu

setParameter(1, idDebit) 
+0

Ich habe den gleichen Fehler: 'Code' Position über die Anzahl der deklarierten ordinal Parameter. Denken Sie daran, dass Ordinalparameter 1-basiert sind! Position: 2 'Code' – Pasja95

Verwandte Themen