Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javax.persistence.Query上调用getResultList()是否执行两次查询?_Java_Javax.persistence - Fatal编程技术网

在javax.persistence.Query上调用getResultList()是否执行两次查询?

在javax.persistence.Query上调用getResultList()是否执行两次查询?,java,javax.persistence,Java,Javax.persistence,当我有一个javax.persistence.Query,我希望从中得到一个列表时,我总是在返回任何值之前检查以确保列表的大小大于1。 e、 g Query q=em.createQuery(sql); 如果(q.getResultList().size()如果q.getResultList();是实际查询,则为是 在比较之前,我会将其存储在变量List storeHere=q.getResultList(); 然后比较该变量而不是命令。正如前面所说,getResultList()执行查询 改为

当我有一个javax.persistence.Query,我希望从中得到一个
列表
时,我总是在返回任何值之前检查以确保
列表
的大小大于1。 e、 g

Query q=em.createQuery(sql);
如果(q.getResultList().size()如果
q.getResultList();
是实际查询,则为是

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

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

正如前面所说,
getResultList()
执行查询

改为这样做:

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

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

@markrotVeel:同意,删除了我的评论。你的代码中的
q
是什么?这只是一个存储变量的例子,因为我们实际上不知道
q
is
List results = q.getResultList();
if (results.size() == 0) {
    return Collections.emptyList();
} else {
    return results;
}