我需要從Oracle數據庫中提取基於ids
的選定行作爲數組,例如SELECT ... FROM table_name WHERE id IN()
查詢。如何在Hibernate中使用setParameterList()方法?
在我嘗試這樣做時,我試圖在我的DAO中使用org.hibernate.setParameterList(String name, Object[] values)
方法,如下所示。
@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();
}
}
給定方法中String[]
類型的參數由相應的Spring控制器類提供。
它導致引發以下異常。
org.hibernate.hql.ast.QuerySyntaxException:意外的標記:,鄰近 第1行,列78從 model.ProductImage選擇prodImageId,prodImage其中prodImageId =:id0_,:id1_,:id2_,: id3_, :id4_,:id5_]
什麼是檢索基礎上使用Hibernate的ids
列表中選定行的方式嗎?
是我的HQL語法錯了。用'where prodImageId in(:id)'工作替換'prodImageId =:id'。 – Tiny
最後一個查詢應該是'query.setParameterList(「accountIds」,accountFilter);',否? –
Fukuzawa是對的,應該是query.setParameterList(「accountIds」,accountFilter),請更新回答 – UCJava