Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 在couchbase N1Ql@query中使用IN子句,或使用couchbase JPA中的findAll(键)_Java_Couchbase_N1ql_Spring Data Couchbase - Fatal编程技术网

Java 在couchbase N1Ql@query中使用IN子句,或使用couchbase JPA中的findAll(键)

Java 在couchbase N1Ql@query中使用IN子句,或使用couchbase JPA中的findAll(键),java,couchbase,n1ql,spring-data-couchbase,Java,Couchbase,N1ql,Spring Data Couchbase,我正在使用SpringCouchbase JPA,并试图通过提供一个密钥列表来获取文档。我的存储库结构看起来像 public interface EmployeeRepo extends CouchbasePagingAndSortingRepository<Employee, String>, EmployeeCustomRepo { 甚至我也尝试将我的密钥列表包装到一个可移植对象。但例外情况仍然是一样的 public List<Employe

我正在使用SpringCouchbase JPA,并试图通过提供一个密钥列表来获取文档。我的存储库结构看起来像

    public interface EmployeeRepo
    extends CouchbasePagingAndSortingRepository<Employee, String>, EmployeeCustomRepo {   
甚至我也尝试将我的密钥列表包装到一个可移植对象。但例外情况仍然是一样的

    public List<Employee> findAllById(List<String> empIds) {
        Iterable<String> itrKeys = empIds;
        return employeeRepo.findAll(itrKeys);
    }
公共列表findAllById(列表empid){
Iterable itrKeys=empIds;
返回employeeRepo.findAll(itrKeys);
}
此外,我还尝试将N1QL与@queryover方法结合使用

      @Query("#{#n1ql.selectEntity} WHERE meta().id IN $ids AND #{#n1ql.filter}")
Collection<ProductCopy> findAllById(@Param("ids") JsonArray ids);
@Query(#{n1ql.selectEntity}其中meta().id在$ids和#{n1ql.filter})中)
集合findAllById(@Param(“ids”)JsonArray id);
我将我的密钥列表转换为JsonArray。 上面的findallbyd()方法不会引发任何异常,但即使我有匹配的键,也不会给出任何文档

      @Query("#{#n1ql.selectEntity} USE KEYS ($ids) ")
Collection<ProductCopy> findByIdIn(@Param("ids") JsonArray ids);
@Query(“{n1ql.selectEntity}使用键($id)”)
集合findByIdIn(@Param(“ids”)JsonArray ids);
在执行findByIdIn()时,我得到了这个异常 n1ql错误:{“msg”:“缺少主键或主键无效

My question is why findAll(Iterable id)/findAll(List id) is not working,when findOne(String id) works smooth and how do I create a parameterized N1QL query which can take multiple items in an IN statement? 我的问题是为什么findAll(Iterable id)/findAll(List id)不工作,当findOne(String id)工作顺利时,以及如何创建一个可以在in语句中接受多个项的参数化N1QL查询?
尝试添加@N1qlPrimaryIndexed和@ViewIndexed注释,如以下示例所示:

@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "businessUnity")
public interface BusinessUnityRepository extends CouchbaseRepository<BusinessUnity, String>{

List<BusinessUnity> findByCompanyId(String companyId);

}
@N1qlPrimaryIndexed
@视图索引(designDoc=“businessUnity”)
公共接口BusinessUnityRepository扩展CouchbaseRepository{
列出findByCompanyId(字符串companyId);
}
此外,您还可以查看本教程:


非常感谢@deniswsrosa。它工作得很顺利。请您解释一下它到底做了什么。N1QLPrimaryIndex确保与当前存储库关联的存储桶将具有N1QL主索引。ViewIndexed为该实体生成一个视图,以避免扫描整个存储桶 My question is why findAll(Iterable id)/findAll(List id) is not working,when findOne(String id) works smooth and how do I create a parameterized N1QL query which can take multiple items in an IN statement?
@N1qlPrimaryIndexed
@ViewIndexed(designDoc = "businessUnity")
public interface BusinessUnityRepository extends CouchbaseRepository<BusinessUnity, String>{

List<BusinessUnity> findByCompanyId(String companyId);

}