Я использую Qdsl и Spring Data Rest, я хотел бы написать логическое выражение для следующего условия. Пожалуйста, предложите.
У меня три таблицы говорят
пользователь (имя пользователя, customer_code, partner_id),
user1 | null | AMZ
user2 | DELL | null
user3 | null | AMZ
user4 | DELL | null
клиент (customer_code, company_name),
DELL | DELLY
партнер (номер, имя).
AMZ | Amazonx
Обязательное логическое выражение для:
выберите * от пользователя u, где u.customer_code in (выберите customer.customer_code от customer, где customer.company_name = 'Amazonx') или u.partner_id in (выберите id от партнера, где partner.name = 'Amazonx');
Пробное выражение Qdsl BooleanExpression с использованием пути к классам Qgenerated:
user.customer.companyName = Amazonx || user.partner.name = Amazonx
Но вывод не генерируется.
При отладке получил запрос:
выберите user0_.username в качестве username1_15_, user0_.customer_code в качестве customer6_15_, user0_.partner_id в качестве partner_8_15_, из пользователя user0_ кросс-соединение клиента customer1_ кросс-присоединение партнера partner2_, где user0_.customer_code = customer1_.customer_code и user0_2partner_id и user0_2partner (customer1_.company_name =? or partner2_.name =?) limit? ', параметры: [' Amazonx ',' Amazonx ', 10]
"user0_.customer_code = customer1_.customer_code и user0_.partner_id = partner2_.id" возвращает значение false, поскольку любое из значений равно нулю.
Как построить логическое выражение, получить желаемое имя пользователя по названию компании или имени партнера.