Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 如何使用规范来制作两个“;或;具有多个“的条件”;及;mysql查询中的条件_Java_Spring_Spring Boot_Spring Data Jpa_Jpa Criteria - Fatal编程技术网

Java 如何使用规范来制作两个“;或;具有多个“的条件”;及;mysql查询中的条件

Java 如何使用规范来制作两个“;或;具有多个“的条件”;及;mysql查询中的条件,java,spring,spring-boot,spring-data-jpa,jpa-criteria,Java,Spring,Spring Boot,Spring Data Jpa,Jpa Criteria,我想在规范的帮助下进行以下查询 从表中选择*(订单数量>0或产品验证=false)和sku=“12345” 下面是我的代码,但我得到了一个错误的结果集 Specification<JitOrderItem> specification = JitOrderItemSpecification.findAll(); specification = Specifications.where(specification).and( Specifica

我想在规范的帮助下进行以下查询

从表中选择*(订单数量>0或产品验证=false)和sku=“12345”

下面是我的代码,但我得到了一个错误的结果集

Specification<JitOrderItem> specification = JitOrderItemSpecification.findAll();

specification = Specifications.where(specification).and(
                    Specifications.where(specification).or(JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0))
                    .or(Specifications.where(specification).and(JitOrderItemSpecification.filterByProductVerified(false)))

                );
specification = Specifications.where(specification).and(JitOrderItemSpecification.filterBySku(sku));
Specification Specification=JitOrderItemSpecification.findAll();
规格=规格。其中(规格)。和(
规格。其中(规格)。或(JITORDIEMMSpecification.FilterByJITORDQuantityGreater大于(0))
.或(specification.where(specification.)和(JitOrderItemSpecification.filterByProductVerified(false)))
);
规格=规格。其中(规格)。和(JitOrderItemSpecification.filterBySku(sku));

我假设您使用的是JPA,可能是hibernate。您可以启用日志记录(对于hibernate,调试的是“org.hibernate.sql”)。这样您就可以看到生成的查询,这可能有助于您自己调试这些查询

查看您的代码,您的最终规范如下所示:

Specifications.where(
    Specifications.where(JitOrderItemSpecification.findAll())
        .and(
            Specifications.where(JitOrderItemSpecification.findAll())
                .or(JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0))
                .or(Specifications.where(JitOrderItemSpecification.findAll()).and(JitOrderItemSpecification.filterByProductVerified(false)))
        )
)
.and(JitOrderItemSpecification.filterBySku(sku));
您基本上是在查询以下内容(仅限WHERE子句):

您想要的可能是以下内容:

Specifications.where(
    JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0).or(JitOrderItemSpecification.filterByProductVerified(false)))
    .and(JitOrderItemSpecification.filterBySku(sku));

我假设您正在使用JPA,可能是hibernate。您可以启用日志记录(对于hibernate,调试的是“org.hibernate.sql”)。这样您就可以看到生成的查询,这可能有助于您自己调试这些查询

查看您的代码,您的最终规范如下所示:

Specifications.where(
    Specifications.where(JitOrderItemSpecification.findAll())
        .and(
            Specifications.where(JitOrderItemSpecification.findAll())
                .or(JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0))
                .or(Specifications.where(JitOrderItemSpecification.findAll()).and(JitOrderItemSpecification.filterByProductVerified(false)))
        )
)
.and(JitOrderItemSpecification.filterBySku(sku));
您基本上是在查询以下内容(仅限WHERE子句):

您想要的可能是以下内容:

Specifications.where(
    JitOrderItemSpecification.filterByJitOrderQuantityGreaterThan(0).or(JitOrderItemSpecification.filterByProductVerified(false)))
    .and(JitOrderItemSpecification.filterBySku(sku));

Put show sql=true可验证您的hibernate查询。Put show sql=true可验证您的hibernate查询。