使用hibernate和JSF时的java.util.NoSuchElementException

使用hibernate和JSF时的java.util.NoSuchElementException,java,hibernate,jsf,primefaces,websphere,Java,Hibernate,Jsf,Primefaces,Websphere,以下是调用查询的方法: public void LogIn() { Query query = null; session.beginTransaction(); query = session .createQuery(" from UserModel where userName = :username and passwd = :password"); query.setString("use

以下是调用查询的方法:

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());
        }
public void LogIn(){
Query=null;
session.beginTransaction();
查询=会话
.createQuery(“来自UserModel,其中userName=:userName和passwd=:password”);
query.setString(“用户名”,getUserVO().getUserName());
query.setString(“密码”,getUserVO().getPasswd());
this.getUserVO().DataRowMapper((List)query.List());
session.getTransaction().commit();
session.close();
}
@凌驾
公共无效数据行映射器(列表){
迭代器i=(迭代器)list.Iterator();
while(i.hasNext()){
this.setUserID(i.next().getUserID());
this.setUserName(i.next().getUserName());
}
现在的问题是,当我运行调试器时,我看到I.hasNext()有正确的值,但我仍然得到NoElementException。另一件让我惊讶的事情是,以前我能够在控制台上打印用户ID,但只有用户ID,其余部分为空,但在我开始出现此错误后不久。数据库根本没有问题。我100%相信我得到了正确的结果,因为我在调试器中看到它,但由于某些原因,我无法在正常模式下通过此错误。类UserModel是一个简单的POJO,我在那里使用Hibernate注释


我在Websphere 8.0中使用RAD 8。有带Hibernate和Primefaces的JSF库。也有Spring库,但到目前为止我还没有使用它们。非常感谢您提供的任何帮助。

您在循环中调用I.next两次,它将记录指针移动到下一个元素。使用单个cal获取对元素的引用下一个是我

所以应该是这样


while(i.hasNext){
usermodel curr=i.next;
当前用户名;
curr.userid;
}

谢谢,伙计,成功了!我想我没有意识到我在给I.next打两个电话。