【问题标题】:How to return a single result object from hibernate query?如何从休眠查询返回单个结果对象?
【发布时间】:2012-09-14 15:36:13
【问题描述】:

查询执行是否总是必须返回一个列表?如果我确定它只会返回一个对象,我该如何替换下面的代码?

@Override
    public List<DocInfo> findAllByDocId(String docId)
    {
        Query q = getCurrentSession().createQuery("from DocInfo item where item.id = :docId");
        q.setString("docId", docId);
        List<DocInfo> docInfoList = q.list();
        return docInfoList;
    }

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    你可以使用

    query.getSingleResult();
    

    当您完全确定查询将只返回一行时,我正在谈论

    import javax.persistence.Query;
    

    【讨论】:

      【解决方案2】:

      如果我没记错的话,你可以在 Hibernate 中使用 Query#uniqueResult()。我认为这就是你要找的。在这种情况下,如果您的查询返回多于一行,则必须在代码中处理 NonUniqueResultException

      【讨论】:

        【解决方案3】:

        如果您是按 id (pk) 加载的,就像您在这里一样,您确实应该使用 Session.load/Session.get 来代替。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-12
          • 1970-01-01
          • 2011-01-10
          • 1970-01-01
          • 2020-12-08
          • 1970-01-01
          相关资源
          最近更新 更多