Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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/1/ms-access/4.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
Spring QueryDSL与BooleanBuilder的交叉联接_Spring_Jpa_Querydsl - Fatal编程技术网

Spring QueryDSL与BooleanBuilder的交叉联接

Spring QueryDSL与BooleanBuilder的交叉联接,spring,jpa,querydsl,Spring,Jpa,Querydsl,简易布尔生成器 booleanBuilder.and(QOrder.order.validationStatus.eq(ValidationStatus.ACCOUNTED)) .and(QOrder.order.orderAddress().id.isNull()); 生成交叉连接 from order order0_ cross join order_address orderaddr1_ where order0_.id=orderaddr1_.order_id and order0

简易布尔生成器

booleanBuilder.and(QOrder.order.validationStatus.eq(ValidationStatus.ACCOUNTED))

.and(QOrder.order.orderAddress().id.isNull());
生成交叉连接

from order order0_ cross join order_address orderaddr1_ where 
order0_.id=orderaddr1_.order_id and order0_ .validation_status=? and 
(orderaddr1_.order_id is null)

因此,它永远不会工作,因为交叉连接总是返回空结果集,因此不会发生is null检查。除了直接使用JPAQuery之外,还有其他解决方案吗?

你找到解决方案了吗?这是一段很长的时间,但我想它已经被重写了,没有QDSL。也许我们通过为DSL指定一些关于关系的提示来消除交叉连接。我们没有使用
.join(qAction.order().address())
而是使用
.join(qAction.order(),QOrder.order)
并将地址引用为
QOrder.order.address()
使DSL查询生成器的订单地址关系更加明显。如果我没有记错的话,DSL只是在没有这个的情况下进行交叉连接。好的,我已经尝试了这两种方法,但都没有成功,但是我的查询正在为连接实体的子实体生成交叉连接。因此,没有明确指定联接的意思。我想唯一的方法就是在实体本身中指定它。仍然没有成功。谢谢你的时间。你能发送这个查询吗?你找到解决方案了吗?这是很长时间了,但我想它已经被重写了,没有QDSL。也许我们通过为DSL指定一些关于关系的提示来消除交叉连接。我们没有使用
.join(qAction.order().address())
而是使用
.join(qAction.order(),QOrder.order)
并将地址引用为
QOrder.order.address()
使DSL查询生成器的订单地址关系更加明显。如果我没有记错的话,DSL只是在没有这个的情况下进行交叉连接。好的,我已经尝试了这两种方法,但都没有成功,但是我的查询正在为连接实体的子实体生成交叉连接。因此,没有明确指定联接的意思。我想唯一的方法就是在实体本身中指定它。仍然没有成功。谢谢您的时间。您能发送查询吗?