我正在運行下面的代碼。具有該名稱的休眠參數[<name>]不存在
UserService.java
String alias = "u";
String select = "SELECT u.email";
String where = "u.userId = :id";
Map<String, Object> params = new HashMap<>();
params.put("id", userId);
List<User> users = db.findRecords(User.class, alias, select, where, params);
DB.java
public <T> List<T> findRecords(Class<T> entityClass, String entityAlias, String select, String where, Map<String, Object> params) {
String sql = select + " FROM " + entityClass.getName() + " " + entityAlias;
if (where != null) {
sql = sql + " WHERE " + where;
}
Query query = entityManager.createQuery(sql);
System.out.println(sql);
if (!params.isEmpty()) {
Iterator<Entry<String, Object>> iterator = params.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, Object> entry = iterator.next();
System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
query.setParameter((String) entry.getKey(), (Long) entry.getValue());
}
}
return query.getResultList();
}
我收到以下錯誤日誌。
SELECT u.email FROM com.catalog.user.User u WHERE u.userId = :id
key: id, value: 28636907
Caused by: java.lang.IllegalArgumentException: Parameter with that name [id] did not exist
如果參數打印在控制檯中,那麼是什麼導致非法參數異常出現?
請幫忙!
您的類「clues.catalog.user.User」被聲明爲實體嗎? –
是的。 import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(名稱= 「cscart_users」) 公共類用戶{ \t @Column(名稱= 「USER_ID」) \t公共龍用戶id; – Sid
可能是因爲字符串連接出現問題,因爲他說他無法在查詢中找到:id參數... 您可以嘗試使用正確的字符串進行創建查詢嗎? entityManager.createQuery(「SELECT u.email FROM clues.catalog.user.User u WHERE u.userId =:id」); – Zeromus