Mam wymóg pobierania wybranych wierszy z bazy danych Oracle na podstawie ids
dostarczonych jako tablica, podobnie jak zapytanie SELECT ... FROM table_name WHERE id IN()
.Jak korzystać z metody setParameterList() w trybie hibernacji?
W moich próbach zrobić, próbuję użyć metody org.hibernate.setParameterList(String name, Object[] values)
w moim DAO w następujący sposób.
@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();
}
}
Parametr typu String[]
w danej metody dostarczane z danej klasy regulatora wiosny.
Powoduje wywołanie następującego wyjątku.
org.hibernate.hql.ast.QuerySyntaxException: nieoczekiwany znak: koło wierszu 1, kolumnie 78 [wybrać prodImageId, prodImage z model.ProductImage gdzie prodImageId =: id0_,: id1_,: id2_,: id3_, : id4_,: id5_]
Jaki jest sposób, aby pobrać wybrane wiersze na podstawie listy ids
wykorzystaniem Hibernate?
Tak moja składnia HQL mylił . Zastąpienie 'where prodImageId =: id' z' where prodImageId in (: id) 'zadziałało. – Tiny
Ostatnie zapytanie powinno być 'query.setParameterList (" accountIds ", accountFilter);', nie? –
Fukuzawa ma rację, powinno być query.setParameterList ("accountIds", accountFilter), proszę zaktualizować odpowiedź – UCJava