0
존재 I이 다음과 같은 선택 사양, 일대 다 관계 : PackingSlip <->> LineItem
건물 카이엔 표현식에 대한 하위 쿼리
내가 qtyOrdered
>qtyShipped
어떤 관련 LineItem
인스턴스가없는 모든 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)
방법을 구성했다. 그러한 것이 존재하지 않기 때문에 (현재), Cayenne 4.0에서 이것을 달성하는 가장 좋은 방법은 무엇입니까? 내가 EJBQLQuery의 큰 팬이 아니다 동안
감사합니다. @andrus_a. EJBQL은 항상 수동으로 SQL을 작성하는 것과 똑같은 방식으로 효과적입니다. 그것은 카이엔 같은 ORM을 사용하여 피할 수있는 동일한 단점을 가지고 있습니다. EJBQL (하드 코딩 된 SQL과 마찬가지로)은 데이터베이스와 쉽게 동기화되지 않습니다. 예를 들어,'LineItem'이'OrderItem'으로 이름이 바뀌 었음을 알리는 컴파일러가 없습니다. 모든 것이 나에게 달려 있으며 누구나 말할 수 있듯이 그것은 버그없는 코드를 만드는 방법이 아닙니다. –