使用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打两个电话。