前端輸入多個防偽碼(逗號分隔),後端需一次查詢並顯示所有符合條件的記錄。單一查詢正常,多條件失敗。
// 後端接收字串
String codes = request.getParameter("codes"); // 如 "A001,A002,A003"
// 分割並去重
String[] arr = codes.split(",");
Set codeSet = new HashSet<>(Arrays.asList(arr));
// 建構 HQL
String hql = "FROM AntiFakeEntity WHERE code IN (:codes)";
Query query = session.createQuery(hql);
query.setParameterList("codes", codeSet); // Hibernate 自動展開 IN 列表
List results = query.list();
setParameterList 自動處理集合轉 IN (?,?,...),防止 SQL 注入。PreparedStatement 動態產生佔位符 IN (?,?,?) 並逐一 setString。後端接收逗號分隔字串 → 分割去重 → 使用 IN (:paramList) 參數化查詢 → 返回列表 → 前端迴圈顯示。簡單、安全、高效。