Cześć. Mam taki sobie taki -model encja:
@Entity
@Table(name="drink")
public class Drink {
@ManyToOne
@JoinColumn(name="user_id")
private User user;
}
oraz do tego w idealnym świecie miałabym taką encję:
@Entity
@Table(name="drink_operation")
public class DrinkOperation {
@ManyToOne
@JoinColumn(name="user_id")
private User user;
@ManyToOne
@JoinColumn(name="source_id")
private Drink source;
@ManyToOne
@JoinColumn(name="destinity_id")
private Drink destinity;
}
dalej mam metodę (której nie mogę ruszyć), która musi dostać kryteria na użytkownika o takie:
session.createCriteria("user","user");
tak to wyglądałoby w idealnym świecie, ale u mnie DrinkOperation to jest tak:
@Entity
@Table(name="drink_operation")
public class DrinkOperation {
@ManyToOne
@JoinColumn(name="source_id")
private Drink source;
@ManyToOne
@JoinColumn(name="destinity_id")
private Drink destinity;
}
użytkownika muszę brać albo z source albo z destinity (jedno z nich może być nullowe).
Czy da się hibernate'owymi kryteriami, nie wiem za pomocą left outer join, imitacji union'a (czyli 2x detached criteria) albo nawet sqlki
wgl. otrzymać równoważne kryteria jak z przypadku wyżej (ten z idealnego świata)?
takie session.createCriteria("source.user","user") || session.createCriteria("destinity.user","user")
, ale w jednym (wyberia to co nie null).
jak to ugryźć