String hql = "FROM User u WHERE u.id = " + userId; // 拼接 SQL 注入風險
Query query = session.createQuery(hql);
修正:參數綁定
// 方式 1:命名參數 (推薦)
String hql = "FROM User u WHERE u.id = :uid";
Query query = session.createQuery(hql);
query.setParameter("uid", userId);
// 方式 2:位置參數
String hql = "FROM User u WHERE u.id = ?";
Query query = session.createQuery(hql);
query.setParameter(0, userId);
結果獲取
// 單一結果
User user = (User) query.uniqueResult();
// 列表結果
List users = query.list();
// 分頁
query.setFirstResult(0);
query.setMaxResults(20);
List page = query.list();
// 投影查詢 (只選特定列)
String hql = "SELECT u.name, u.email FROM User u WHERE u.id = :uid";
List