【发布时间】:2013-12-10 02:45:03
【问题描述】:
好的,假设我有订单和商品表。这是我的 Order 类中项目的描述方式:
@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;
这很好用。但是让我们想象一下桥表中有一个名为 MY_ORDER_ITEM_BRIDGE.expiration_date 的日期。
我想将定义更改为仅包含到期日期尚未发生的项目。
所以我希望生成的 SQL 看起来像:
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;
我正在使用 Ebean,Play Framework 2.1.3。感谢您的帮助。
更新:或者,它也可能是任一连接的第二个条件:
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
(如果可能的话,我想在类定义中而不是在原始 SQL 中这样做)
【问题讨论】:
-
您只需要编写查询或更改架构的定义?
-
我试图更改定义。但是,当我试图查找记录时,也许我应该按日期过滤掉?无论哪种方式,我都会尽可能避免在代码中使用 SQL。
标签: java jpa playframework playframework-2.0 ebean