ids
クエリのような配列として提供されたものに基づいて、Oracle データベースから選択した行をフェッチする必要がありSELECT ... FROM table_name WHERE id IN()
ます。
そうしようorg.hibernate.setParameterList(String name, Object[] values)
として、次のようにDAOでメソッドを使用しようとしています。
@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 列目 [prodImageId=:id0_、:id1_、:id2_、:id3_、:id4_、:id5_ の model.ProductImage から prodImageId、prodImage を選択]
ids
Hibernate を使用してリストに基づいて選択した行を取得する方法は何ですか?