
[英]Hibernate : org.hibernate.QueryParameterException: could not locate named parameter
[英]org.hibernate.QueryParameterException: could not locate named parameter [userId]
我需要帮助,我遇到了上述异常。 我哪里错了? 在从类到表的映射中,我使用了以下内容:
private String userId;
private String password;
下面是我编写查询的类。
public class LoginManager extends HibernateUtil {
private String loginId;
public String checkCredentials(String userId, String password) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
try {
loginId = (String) session.createQuery("select user_id from com.project.model.Login where user_id=:userId and password=:password")
.setParameter("userId",userId)
.setParameter("password", password)
.list().toString();
} catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();
}
session.getTransaction().commit();
return loginId;
}
}
实体
@Entity
@Table(name = "Login")
public class Login implements Serializable {
private static final long serialVersionUID = 2L;
private String userId;
private String password;
@Id
@Column(name = "user_id")
public String getUserId() {
return userId;
}
public void setUser_id(String userId) {
this.userId = userId;
}
@Column(name = "password")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
问题是 Hibernate 找不到字段 userId 的设置器。 你是这样定义的:
public void setUser_id(String userId) {
this.userId = userId;
}
它应该是:
public void setUserId(String userId) {
this.userId = userId;
}
Hibernate 通过您的变量名映射您的数据库。 所以你有了;
userId;
但在您的查询中,您有
user_id
您需要使用userId
而不是user_id
。
异常清楚地表明您提供了错误的参数。
检查它是否是错字错误
loginId = (String) session.createQuery("select user_id from com.project.model.Login where user_id=:userId and password=:password") .**setParameter("userId",userId)**.setParameter("password", password).list().toString();
loginId = (String) session.createQuery("select user_id from com.project.model.Login where user_id=:userId and password=:password") .**setParameter("user_id",userId)**.setParameter("password", password).list().toString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.