Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 如何初始化Spring数据JPA的规范?_Java_Spring Data Jpa_Dynamicquery - Fatal编程技术网

Java 如何初始化Spring数据JPA的规范?

Java 如何初始化Spring数据JPA的规范?,java,spring-data-jpa,dynamicquery,Java,Spring Data Jpa,Dynamicquery,我有一个使用过滤器进行搜索的方法,因此我使用它来构建动态查询: public Page<Foo> searchFoo(@NotNull Foo probe, @NotNull Pageable pageable) { Specification<Foo> spec = Specification.where(null); // is this ok? if(probe.getName() != null) {

我有一个使用过滤器进行搜索的方法,因此我使用它来构建动态查询:

public Page<Foo> searchFoo(@NotNull Foo probe, @NotNull Pageable pageable) {

        Specification<Foo> spec = Specification.where(null);  // is this ok?

        if(probe.getName() != null) {
            spec.and(FooSpecs.containsName(probe.getName()));
        }
        if(probe.getState() != null) {
            spec.and(FooSpecs.hasState(probe.getState()));
        }
        //and so on...

        return fooRepo.findAll(spec, pageable);
}
规范。其中(null)
工作正常。 它用
@Nullable
进行注释,并且实现会按其应该的方式处理
null

问题在于,您正在使用
方法,好像它将修改
规范
,但它会创建一个新规范。所以你应该使用

spec = spec.and( ... );

你会得到什么样的例外?我认为这应该行得通。请添加堆栈跟踪。另外,如果你已经知道“上面的代码不起作用”@jenschauder没有错误,但它不会过滤,那么你为什么要问“这样行吗?”。我总是能得到桌子上的所有结果。我问它是否可以,因为我不确定它是否可以,我没有看到这样的例子。此外,当我调试时,我看到
spec
为空。你能分享一下
FooSpecs
的代码吗?用FooSpecs(又称处方规范)更新的,嗯,我觉得还可以。它们自己工作吗,比如在
fooRepo.findAll(containsUserCode(“XXX”),可分页)?假设我有5个字段,但是因为它们都是空的,所以spec的值是
Specification.where(null)
。问题:有没有办法检查规范是否等于
规范。其中(空)
@IlyaSerebryannikov请不要在评论中提出新问题,而是在问题中提出。
spec = spec.and( ... );