Wie definiere ich mehrere Bedingungen für eine JPA / Ebean-Verknüpfung?
Ok, nehmen wir an, ich habe Bestell- und Artikeltabellen. So werden Artikel in meiner Bestellklasse beschrieben:
@ManyToMany(cascade=CascadeType.PERSIST)
@JoinTable(name="MY_ORDER_ITEM_BRIDGE",
joinColumns=@JoinColumn(name="bridge_order_id",referencedColumnName = "order_order_id"),
inverseJoinColumns = @JoinColumn(name="bridge_item_id", referencedColumnName="item_item_id"))
private List<Item> items;
Das funktioniert gut. Stellen wir uns jedoch vor, dass die Brückentabelle ein Datum mit dem Namen MY_ORDER_ITEM_BRIDGE.expiration_date enthält.
Ich möchte die Definition so ändern, dass nur Elemente mit Ablaufdatum eingeschlossen werden, die noch nicht aufgetreten sind.
Daher möchte ich, dass das generierte SQL ungefähr so aussieht:
SELECT *
FROM order o
join my_order_item_bridge b
on b.bridge_order_id = o.order_order_id
join item i
on i.item_item_id = b.bridge_item_id
where b.expiration_date < sysdate;
Ich verwende Ebean, Play Framework 2.1.3. Danke für jede Hilfe.
AKTUALISIEREN: Alternativ kann es sich auch um eine zweite Bedingung für einen der Joins handeln:
SELECT *
FROM order o
join my_order_item_bridge b
on b.bridge_order_id = o.order_order_id
and b.expiration_date < sysdate
join item i
on i.item_item_id = b.bridge_item_id
(Wenn möglich, möchte ich dies in der Klassendefinition tun, nicht in rohem SQL)