나는 다음과 같은 QueryDSL 쿼리가 있습니다QueryDsl - 또는 문이 작동하지
QCustomer customer = QCustomer.customer;
BooleanBuilder builder = new BooleanBuilder();
builder.or(customer.person.name.containsIgnoreCase(query));
builder.or(customer.company.name.containsIgnoreCase(query));
return builder;
을 그리고 쿼리 매개 변수를 포함하는 이름 = 쿼리 및/또는 회사가 포함되어 사람의 결과를 얻을 것으로 기대합니다. 하지만 나는 아무것도 얻지 못합니다.
이 내 Customer
클래스 매핑 :
@OneToOne(orphanRemoval = false, optional = true, cascade = CascadeType.ALL)
private Company company;
@OneToOne(orphanRemoval = false, optional = true, cascade = CascadeType.ALL)
private Person person;
사람이 내가 여기에 누락 알고 계십니까? 이 봄 데이터 결과 페이지를 매기는 데 사용하는 첫 번째 쿼리이기 때문에 그것은 카운트를 사용
select
count(customer0_.uid) as col_0_0_
from
Customer customer0_
cross join
Person person1_
cross join
Company company2_
where
customer0_.person_uid=person1_.uid
and customer0_.company_uid = company2_.uid
and (lower(person1_.name) like ? escape '!' or lower(company2_.name) like ? escape '!') limit ?
:
select o
from Customer
where o.person.name like '%:name%' or o.company.name like '%:name%'
이 생성 된 쿼리는 다음과 같습니다
은이 같은 쿼리를 얻을 것으로 예상 .
회사와 사람 모두 필수 속성입니까? SQL 쿼리가 어떻게 생겼는지 확인 했습니까? –
@ TimoWestkämper 아니오, 선택 사항입니다 ... 생성 된 쿼리로 질문을 업데이트했습니다. 감사합니다 –