繁体   English   中英

org.hibernate.QueryParameterException: 找不到命名参数 [userId]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM