0
我有以下可選的,一對多的關係:PackingSlip <->> LineItem
大廈卡宴表達式的EXISTS子查詢
我需要將所有不具有任何相關LineItem
實例與qtyOrdered
>qtyShipped
的PackingSlip
實例相匹配。
什麼是最有意義的我將是沿行寫的表達式:這也是我希望沿行生成SQL
PackingSlip.LINE_ITEMS.containsMatch(LineItem.QTY_ORDERED.lt(LineItem.QTY_SHIPPED)).notExp();
:
SELECT t0.id, ... FROM packing_slip t0
WHERE NOT (
EXISTS (
SELECT * FROM line_item t1
WHERE t1.packing_slip_id = t0.id
AND t1.qty_ordered < t1.qty_shipped
)
)
顯然,我制定了containsMatch(Expression)
方法。既然這樣的事情不存在(目前),那麼在卡宴4.0中完成這件事的最好方法是什麼?
謝謝@andrus_a。 EJBQL一直和我手動編寫SQL一樣有效。它帶有許多與我一樣使用像Cayenne這樣的ORM來避免的缺點! EJBQL(就像硬編碼的SQL)很容易與數據庫不同步。例如,沒有編譯器看着我的後背告訴我'LineItem'已被重命名爲'OrderItem'。這一切都在我身上,正如任何人都可以告訴你的,這不是無錯代碼的祕訣。 –