title: How to use QueryDsl with @PrimaryKeyJoinColumn?
body: <p>I want to create a querydsl <code>Predicate</code> to use it with <code>spring-jpa</code> <code>CrudRepository</code>.</p>
  <p>Problem: I have an optional <code>@PrimaryKeyJoinColumn</code> that references to the child entity by <code>@Id</code> PK.
  And I want to select only the rows where the child table does <strong>not</strong> contain a reference with the main row.</p>
  <p>In this example: I only want to select bookings in status = 2, and where no editor reference exists inside the child table.</p>
  <pre><code>BooleanBuilder booleanBuilder = new BooleanBuilder(predicate)
          .and(QBooking.booking.status.eq(2))
          .and(QBooking.booking.editor.id.isNull());
                  
  dao.findAll(booleanBuilder.getValue()); //dao is QuerydslPredicateExecutor&lt;Booking&gt;
  
  
  class Booking {
      @Id
      long id;
      
      String status;
      
      //joins the table by their PK id
      @PrimaryKeyJoinColumn
      public Editor editor;
  }
  
  class Editor {
      @Id
      long id;
      
      ...
  }
  </code></pre>
  <p>The sql generated from it is:</p>
  <pre><code>select * from booking
      CROSS JOIN editor
      WHERE booking.id = editor.id
      and booking.status = ?
      and editor.id is null;
  </code></pre>
  <p>But this is wrong (as of course this never returns any result)!
  What I'm looking for is:</p>
  <pre><code>select * from booking
      CROSS JOIN editor
      WHERE (booking.id = editor.id OR editor.id is null)
      and booking.status = ?;
  </code></pre>
  <p>How can I achieve the later sql statement with querydsl?</p>