2012-11-20 3 views
0

계정의 최신 행을 찾기 위해 같은 테이블에 조인해야하는 쿼리가 있습니다.동일한 테이블에 조인 할 때 잘못된 SQL을 생성하는 Scalaquery

val all = for { 
    Join(s,s1) <- Subscriptions leftJoin Subscriptions 
        on ((a,b) => a.account === b.account && a.id < b.id) 
        if s1.id.?.isNull 
} yield s 

이 문제는 Subscription t2 left join Subscription t2 함께 다음과 같은 SQL을

SELECT `t2`.`ACCOUNT`,`t2`.`PLAN`,`t2`.`CALLBACK`,`t2`.`DELETED`,`t2`.`HIBERNATED`,`t2`.`CREATED`,`t2`.`UPDATED` FROM {oj `SUBSCRIPTION` `t2` left outer join `SUBSCRIPTION` `t2` on ((`t2`.`ID`=`t2`.`ID`) and (`t2`.`ID` < `t2`.`ID`))} WHERE (`t2`.`ID` is null) 

를 생성합니다. 테이블에는 다른 별명이 있어야합니다.

내가 복사하여이 문제를 해결하려면 입수하고 Subscriptions에 객체를 붙여

val all = for { 
    Join(s,s1) <- Subscriptions leftJoin Subscriptions1 
        on ((a,b) => a.account === b.account && a.id < b.id) 
        if s1.id.?.isNull 
} yield s 

이 쿼리는 유효한 SQL을 생성하지만, 이상적인 미만에 쿼리를 변경했습니다.

이 방법이 있습니까? 그 다음 SLICK에 고정되면 스칼라 2.10으로 점프합니다.

답변

0

SLICK 0.11.2는이 유스 케이스에서 작동합니다. 내 프로젝트를 scala 2.10/play 2.1로 마이그레이션했습니다.