Tôi có yêu cầu tìm nạp các hàng đã chọn từ cơ sở dữ liệu Oracle dựa trên ids
được cung cấp dưới dạng mảng, giống như truy vấn SELECT ... FROM table_name WHERE id IN()
.Làm thế nào để sử dụng phương thức setParameterList() trong Hibernate?
Trong nỗ lực của tôi để làm như vậy, tôi đang cố gắng sử dụng phương pháp org.hibernate.setParameterList(String name, Object[] values)
trong DAO của tôi như sau.
@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();
}
}
Tham số loại String[]
trong phương thức đã cho được cung cấp từ lớp bộ điều khiển Spring tương ứng.
Điều này khiến cho ngoại lệ sau được ném.
org.hibernate.hql.ast.QuerySyntaxException: dấu hiệu bất ngờ:, gần dòng 1, cột 78 [chọn prodImageId, prodImage từ model.ProductImage nơi prodImageId =: id0_,: id1_,: id2_,: id3_, : id4_,: id5_]
cách để lấy hàng được lựa chọn dựa trên danh sách các ids
sử dụng Hibernate là gì?
Có cú pháp HQL của tôi đã sai . Thay thế 'where prodImageId =: id' bằng' where prodImageId in (: id) 'hoạt động. – Tiny
Truy vấn cuối cùng phải là 'query.setParameterList (" accountIds ", accountFilter);', no? –
Fukuzawa là đúng, nên query.setParameterList ("accountIds", accountFilter), vui lòng cập nhật câu trả lời – UCJava