Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
Java Hibernate(HQL)查找参数列表缺少的ID_Java_Sql_Hibernate_Jpa - Fatal编程技术网

Java Hibernate(HQL)查找参数列表缺少的ID

Java Hibernate(HQL)查找参数列表缺少的ID,java,sql,hibernate,jpa,Java,Sql,Hibernate,Jpa,假设我有一个ID列表(作为参数,而不是表)和一个包含实体及其ID的表 参数列表: ID:1,2,3,4 表实体: ID:1,3,4 现在我想找到我的参数列表中所有缺失的值,这些值没有存储在数据库中,在本例中为:ID2 我想到的简单且重载的函数是查询每个id是否存在。。。如果不存在,则将其添加到结果中 public List<long> findMissing(List<long> ids) { List<long> missing = new Arra

假设我有一个ID列表(作为参数,而不是表)和一个包含实体及其ID的表

参数列表: ID:1,2,3,4

表实体: ID:1,3,4

现在我想找到我的参数列表中所有缺失的值,这些值没有存储在数据库中,在本例中为:ID2

我想到的简单且重载的函数是查询每个id是否存在。。。如果不存在,则将其添加到结果中

public List<long> findMissing(List<long> ids) {
    List<long> missing = new ArrayList<long>();
    for (long id : ids) {
         if (!dao.exists(id))
              missing.add(id);
    }
    return missing;
}

不幸的是,
FROM
子句中不允许使用参数。您需要选择所有ID并在内存中过滤它们。这对于0-1000个元素来说应该不会太昂贵

不幸的是,
FROM
子句中不允许使用参数。您需要选择所有ID并在内存中过滤它们。这对于0-1000个元素来说应该不会太贵。我担心这将是答案。然后我将进行内存过滤。我在O(n)@crizzis中发现了一个removeAll版本,你能把这个作为答案吗?非常感谢。
SELECT t FROM (:ids) t 
     WHERE t not in 
          (SELECT e.id FROM MyEntity e 
               WHERE *maybe some conditions*);