java.util.NoSuchElementException 使用休眠和 JSF 时

问题描述 投票:0回答:1

以下是调用查询的方法:

public void LogIn() {
        Query query = null;

        session.beginTransaction();
        query = session
                .createQuery(" from UserModel where userName = :username and passwd = :password");
        query.setString("username", getUserVO().getUserName());
        query.setString("password", getUserVO().getPasswd());

        this.getUserVO().DataRowMapper((List<UserModel>) query.list());
        session.getTransaction().commit();
        session.close();
    }

@Override
    public void DataRowMapper(List<?> list) {
        Iterator<UserModel> i = (Iterator<UserModel>) list.iterator();
        while (i.hasNext()) {
            this.setUserID(i.next().getUserID());
            this.setUserName(i.next().getUserName());
        }

现在的问题是,当我运行调试器时,我看到 i.hasNext() 具有正确的值,但我仍然不断收到 NoElementException。我看到的另一件令人惊讶的事情是,以前我能够在控制台上打印 UserID,但只有 UserID,其余部分为空,但在我开始收到此错误后不久。数据库完全没有问题。我 100% 确信我得到了正确的结果,因为我在调试器中看到了它,但由于某种原因,我无法在正常模式下解决这个错误。类 UserModel 是一个简单的 POJO,我在那里使用 Hibernate Annotations。

我正在使用 RAD 8 和 Websphere 8.0。有带有 Hibernate 和 Primefaces 的 JSF 库。还有 Spring 库,但到目前为止我还没有使用过它们。任何帮助将不胜感激。

java hibernate jsf primefaces websphere
1个回答
0
投票

你在循环中调用 i.next 两次,这会将记录指针移动到下一个元素。通过一次调用 i.next 获取对元素的引用。

所以它应该像

while (i.hasNext){
    usermodel curr =i.next;
    curr.username;
    curr.userid;
}
© www.soinside.com 2019 - 2024. All rights reserved.