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')
) ;

「Slide」と「Batch」の 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"));
4

1 に答える 1

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);
于 2012-10-22T12:03:04.770 に答える