Comment utiliser le setParameterList() la méthode en veille prolongée?
J'ai une exigence pour aller chercher lignes sélectionnées à partir de la base de données Oracle basé sur ids
fourni comme un tableau, quelque chose comme le SELECT ... FROM table_name WHERE id IN()
requête.
Dans mes tentatives pour le faire, je suis en train d'utiliser le org.mise en veille prolongée.setParameterList(String name, Object [])
méthode dans mon DAO comme suit.
@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();
}
}
Le paramètre de type de String[]
dans la méthode donnée est fournie à partir de la Printemps de contrôleur de classe.
Il provoque exception.
org.mise en veille prolongée.hql.ast.QuerySyntaxException: unexpected token: , près de
ligne 1, colonne 78 [select prodImageId, prodImage de
de modèle.ProductImage où prodImageId=:id0_, :id1_, :id2_, :id3_,
:id4_, :id5_]
Quel est le moyen de récupérer les lignes sélectionnées basés sur la liste de ids
de l'utilisation d'Hibernate?
OriginalL'auteur Tiny | 2013-01-12
Vous devez vous connecter pour publier un commentaire.
En supposant
accountFilter
est unList
objet. Gardez à l'esprit que vous ne devez pas passer à vide listes, car le résultat serait dans le code SQL suivant (qui ne fonctionne pas):... WHERE xyz IN () ...
(notez le vide dans la clause).where prodImageId=:id
avecwhere prodImageId in(:id)
travaillé.La dernière requête doit être
query.setParameterList("accountIds", accountFilter);
, non?Yukichi est droit , devrait être de la requête.setParameterList("accountIds", accountFilter), veuillez mettre à jour répondre
OriginalL'auteur user1972796
Le problème que la plupart des gens ici, c'est qu'ils veulent toujours utiliser,
au lieu de
utilisation
setParameterList()
lorsque vous traitez avec des listesOriginalL'auteur Luthoz