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; }
}