-1

当我有一个我期待的 javax.persistence.Query 时,List我总是检查以确保List在返回任何值之前它的大小大于 1。例如

Query q = em.createQuery(sql);

if(q.getResultList().size()<1)
        {
            return new ArrayList();
        }
        else
        {
            return q.getResultList();
        }

我想知道当我检查大小时,如果查询被执行两次,我何时返回结果。

4

2 回答 2

3

getResultList()正如文档所说,执行查询。

改为这样做:

List results = q.getResultList();
if (results.size() == 0) {
    return Collections.emptyList();
} else {
    return results;
}

当然,如果这是 a TypedQuery,您应该添加泛型部分。从没有结果记录的查询中返回一个不可修改的空列表是一种很好的做法。

于 2016-03-01T16:46:59.980 回答
0

如果q.getResultList();是实际查询,那么是的。

在比较之前,我会将其存储在一个变量中List storeHere = q.getResultList();

然后比较该变量而不是命令。

于 2016-03-01T16:43:34.990 回答