Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 QueryDsl:使用or()和not()为条件生成错误的sql_Java_Postgresql_Querydsl - Fatal编程技术网

Java QueryDsl:使用or()和not()为条件生成错误的sql

Java QueryDsl:使用or()和not()为条件生成错误的sql,java,postgresql,querydsl,Java,Postgresql,Querydsl,我在DB中有一个表,其中有列date\u start和date\u finish。它是日期范围和date\u start当将而不是合并到子表达式中时,您将反转所有比较(例如=变为和变为 public static BooleanExpression dateRangeIntersection(Range<Date> range, TemporalExpression<Date> pathStart, TemporalExpression<Date> pathF

我在DB中有一个表,其中有列
date\u start
date\u finish
。它是日期范围和
date\u start当将
而不是
合并到子表达式中时,您将反转所有比较(例如
=
变为
变为

public static BooleanExpression dateRangeIntersection(Range<Date> range, TemporalExpression<Date> pathStart, TemporalExpression<Date> pathFinish) {
        return pathStart.gt(range.getLast()).
                or(pathFinish.lt(range.getFirst())).
                not();
    }
SELECT * FROM table t WHERE NOT (t.date_start > '2016-01-04' OR t.date_finish < '2016-01-01')
SELECT * FROM table t WHERE t.date_start <= '2016-01-04' AND t.date_finish >= '2016-01-01'
NOT (a > b OR c < d)
a <= b AND c >= d
t.date_start <= '2016-01-04'   AND   t.date_finish >= '2016-01-01'
`2015-10-25` <= '2016-01-04'   AND   `2016-01-02`  >= '2016-01-01'
TRUE                           AND   TRUE