【问题标题】:java.util.NoSuchElementException when using hibernate and JSFjava.util.NoSuchElementException 使用休眠和 JSF 时
【发布时间】:2012-07-28 00:56:14
【问题描述】:

以下是调用查询的方法:

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。我看到的另一件令人惊讶的事情是,以前我能够在控制台上打印用户 ID,但只有用户 ID,其余部分为空,但在我开始收到此错误后不久。数据库完全没有问题。我 100% 确信我得到了正确的结果,因为我在调试器中看到了它,但由于某种原因,我无法在正常模式下克服这个错误。 UserModel 类是一个简单的 POJO,我在那里使用 Hibernate Annotations。

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

【问题讨论】:

    标签: java hibernate jsf primefaces websphere


    【解决方案1】:

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

    应该是这样的

    while (i.hasNext){ usermodel curr =i.next; curr.username; curr.userid; }

    【讨论】:

    • 谢谢老哥,成功了!我想我没有意识到我正在对 i.next 进行两次调用。
    猜你喜欢
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2012-08-06
    • 2012-12-05
    • 2012-07-04
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多