Ich habe eine Anforderung zum Abrufen ausgewählter Zeilen aus der Oracle-Datenbank basierend auf ids
als Array geliefert, so etwas wie die SELECT ... FROM table_name WHERE id IN()
Abfrage.Wie verwende ich die Methode setParameterList() in Hibernate?
Bei meinen Versuchen versuche ich die Methode org.hibernate.setParameterList(String name, Object[] values)
in meinem DAO wie folgt zu verwenden.
@Service
@Transactional(readOnly = true, propagation=Propagation.REQUIRES_NEW)
public final class ProductImageDAO implements ProductImageService {
@SuppressWarnings("unchecked")
public List<Object[]> getFileName(String[] list) {
return sessionFactory
.getCurrentSession()
.createQuery("SELECT prodImageId, prodImage FROM ProductImage WHERE prodImageId=:list")
.setParameterList("list", list).list();
}
}
Die Parameter des Typs String[]
in der angegebenen Methode wird von der jeweiligen Feder Controller-Klasse versorgt.
Die folgende Ausnahme wird ausgelöst.
org.hibernate.hql.ast.QuerySyntaxException: unerwartetes Token: nahe Zeile 1, Spalte 78 [select prodImageId, prodImage aus model.ProductImage wo prodImageId =: id0_,: id1_,: id2_,: id3_, : id4_,: id5_]
Was ist der Weg, um die ausgewählten Zeilen auf Liste der ids
mit Hibernate basiert abzurufen?
Ja meine HQL Syntax falsch war . Das Ersetzen von 'where prodImageId =: id' mit' where prodImageId in (: id) 'hat funktioniert. – Tiny
Die letzte Abfrage sollte 'query.setParameterList (" accountIds ", accountFilter) sein;', nein? –
Fukuzawa hat Recht, sollte query.setParameterList ("accountIds", accountFilter) sein, bitte aktualisieren Sie die Antwort – UCJava