在javax.persistence.Query上调用getResultList()是否执行两次查询?
当我有一个javax.persistence.Query,我希望从中得到一个在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()执行查询 改为
列表
时,我总是在返回任何值之前检查以确保列表
的大小大于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;
}