Hibernate пользовательское условие объединения на ассоциацию

Я хотел бы связать 2 объекта, используя аннотации гибернации, с пользовательским предложением соединения. Предложение касается обычного равенства FK/PK, но также и там, где FK равно нулю. В SQL это будет что-то вроде:

join b on a.id = b.a_id or b.a_id is null

Из того, что я прочитал, я должен использовать аннотацию @WhereJoinTable для объекта-владельца, но я озадачен тем, как я задаю это условие... особенно его первую часть - ссылку на идентификатор присоединяемого объекта.

У кого-нибудь есть пример?

1 ответ

Решение

Вот пример использования стандартной парадигмы родитель / потомок, которая, я думаю, должна работать с использованием базовой аннотации @Where.

public class A {
  ...
  @ManyToOne(fetch = FetchType.EAGER) // EAGER forces outer join
  @JoinColumn(name = "a_id")
  @Where(clause = "a_id = id or a_id is null") // "id" is A's PK... modify as needed
  public B getB() { return b; }

}

public class B {
  ...
  @OneToMany(mappedBy = "b")
  public List<A> getA() { return a; }
}
Другие вопросы по тегам