2012-10-22 2 views
1

와 결합 내가 최대 절전 모드 쿼리 아래 변환해야 -최대 절전 모드 : 쿼리에 대한 하위 쿼리

select * from ep_batch eb 
INNER JOIN ep_slide slide ON eb.batch_scanner_id = slide.slide_batch_id 
WHERE eb.batch_scanner_id = 1 AND 
eb.batch_status = 
(
IF((SELECT count(batch_id) as cnt from ep_batch WHERE batch_scanner_id = 1) =1,'Ready','In Progress') 
) ; 

나는 "슬라이드"가 않고 "일괄"POJO는 ep_slide 및 ep_batch의 RESP를 나타냅니다. 로 주석을 결합하여 -

@OneToMany(mappedBy = "batch") 
    private Set<Slide> slides; 
@ManyToOne 
    @JoinColumn(name = "batchId") 
    private Batch batch; 

나는 조건에 서브 쿼리를 추가하는 방법을 아주 확실하지 않다. 나는 다음과 같은 것을 시도하고있다 - 나는 실행하지 않은

DetachedCriteria subCriteria = DetachedCriteria.forClass(Slide.class); 
     subCriteria.setProjection(Projections.count("batchId")); 

답변

0

,하지만 당신은 적절하게 개체의 속성을 대체 HQL 아래를 시도 할 수 있습니다.

SELECT b FROM Batch b, Slide s 
WHERE b.batch_scanner_id = s.slide_batch_id AND 
b.batch_status = 
(CASE WHEN ((SELECT COUNT(bt.batch_id) FROM Batch bt WHERE bt.batch_scanner_id = 1) = 1) THEN 'Ready' 
ELSE 'In Progress' 
END);