QueryDSL其中relationship可以为null

时间:2015-06-09 17:38:17

标签: java jpa querydsl

所以我正在尝试编写一个如下所示的查询dsl查询:

    JPAQuery bookQuery = new JPAQuery();
    QBook qBook = QBook.book;
    bookQuery.from(qBook);

    BooleanBuilder predicates = new BooleanBuilder();
    predicates
            .or(qBook.author.id.eq(personId))              
            .or(qBook.editor.id.eq(personId));

    bookQuery.where(predicates);

但是查询失败了,因为编辑器有时会为null。如何执行此查询,以便在编辑器为空时返回作者ID匹配的结果?

这是一个人为的例子,但这是我需要解决的技术问题。

2 个答案:

答案 0 :(得分:0)

只有这样我才能弄清楚如何在相同的JPAQuery中使用子查询,如下所示:

<input ... class="my-input" data-counted="N">

答案 1 :(得分:0)

你也可以使用左连接

JPAQuery query = new JPAQUery();
QBook book = QBook.book;
query.from(book)
     .leftJoin(book.editor, editor)
     .where(book.author.id.eq(personId).or(editor.id.eq(personId)))
     .list(book);