如何在QDSL中编写用于多查询的BooleanExpression

时间:2019-01-09 18:03:14

标签: sql spring-data-rest querydsl boolean-expression

我正在使用Qdsl和Spring Data Rest,我想为以下条件编写布尔表达式。请提出建议。

我有3张桌子说

用户(用户名,客户代码,合作伙伴ID)

   user1 |  null     |  AMZ
   user2 |  DELL     |  null
   user3 |  null     |  AMZ
   user4 |  DELL     |  null

客户(客户代码,公司名称)

       DELL      | DELLY

partner(id,name)。

     AMZ     | Amazonx

必需的布尔表达式:

从用户u中选择*,其中u.customer_code输入(从customer.company_name ='Amazonx'的客户中选择customer.customer_code)或u.partner_id in(从partner.partner.name ='Amazonx'的伙伴中选择id) / p>

使用Qgenerated类路径尝试过Qdsl BooleanExpression:

user.customer.companyName = Amazonx || user.partner.name = Amazonx

但是没有输出。

在调试时得到查询:

从用户user0_交叉加入客户customer1_交叉加入伙伴partner2_中选择user0_.username作为username1_15_,user0_.customer_code作为customer6_15_,user0_.partner_id作为partner_8_15_,其中user0_.customer_code = customer1_.customer_code和user0_.partner_id = partner2。 (customer1_.company_name =?或partner2_.name =?)限制?',参数:['Amazonx','Amazonx',10]

“ user0_.customer_code = customer1_.customer_code和user0_.partner_id = partner2_.id”返回false,因为任一值均为null。

如何构造布尔表达式以在公司名称或合作伙伴名称匹配时获取所需的用户名。

0 个答案:

没有答案