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)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage