我试图在querydsl中匹配此SQL查询
SELECT tr.* FROM test.TRIP_REQ tr left outer join test.ADDR_BOOK ab on tr.REQ_USERID=ab.USER_ID
如果您加入标识列,我知道如何进行左连接查询,但很难使其与2个备用列的连接一起工作。 tr.REQ_USERID和ab.USER_ID不是标识列
这是我的查询:
QTripReq qTripReq = QTripReq.tripReq;
QAddressBook qABook = QAddressBook.addressBook;
JPAQuery query = new JPAQuery(entityManager);
query.from(qTripReq).leftJoin(qABook).on(qTripReq.requestorUser.id.eq(qABook.user.id)).list(qTripReq);
抛出错误:
加入的路径! [从com.TripReq tripReq中选择tripReq,使用tripReq.requestorUser.id = addressBook.user.id连接ADDR_BOOK地址簿,其中tripReq.assignedCompany.id =?1]
答案 0 :(得分:3)
您需要将目标实体路径添加到leftJoin()
,以便
QTripReq qTripReq = QTripReq.tripReq;
QAddressBook qABook = QAddressBook.addressBook;
JPAQuery query = new JPAQuery(entityManager);
query.from(qTripReq).leftJoin(qTripReq.addressBook, qABook).on(qTripReq.requestorUser.id.eq(qABook.user.id)).list(qTripReq);
查看文档中的Using joins部分。