Hibernate пользовательское условие объединения на ассоциацию - PullRequest
6 голосов
/ 10 мая 2010

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

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

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

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

1 Ответ

19 голосов
/ 12 мая 2010

Вот пример использования стандартной парадигмы родитель / потомок, которая, я думаю, должна работать с использованием базовой аннотации @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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...