2016-10-15 6 views
1

HQLでJDBCクエリを書き直しています。HQLでHAVINGでSUMを使用しようとすると "CLOSE、found '='"例外が発生する

私はワークフローがあり、ワークフローごとにいくつかのタスクがあります。 タスクは '0'、 '1'、 '2'、 '3'のタイプで、BOOLカラムが 'completed'であることができます。各ワークフローには、各タイプの少なくとも1つのタスクがあります。ワークフローのタイプが「0」のタスクのみが完了しているジョブだけを取得する必要があります。

"SELECT j.* 

FROM job j 

INNER JOIN workflow w 

ON j.id = w.job_id 

INNER JOIN task t 

ON t.workflow_id = w.id 

WHERE j.company_id = ? 

GROUP BY j.id 

HAVING SUM(t.completed = TRUE AND t.type != 0) = 0" 

はここに私のHQLクエリです:

は、ここに私のJDBCクエリです

"SELECT j 

FROM Job j 

JOIN c.workflow w 

JOIN task t 

WHERE j.company_id = :companyId 

GROUP BY j.id 

HAVING SUM(t.completed = TRUE AND t.type != 0) = 0" 

しかし、このHQLクエリーを実行している私は、SUM句の例外 " '=' が見つかり、CLOSE期待" できます。

+0

使用 'HAVING SUM(t.completed)= = 0 ' –

+0

私は私が必要とする結果を返しません、残念ながらあなたのコメントティムしかしに感謝:ここでの作業クエリです!。私のHQLクエリには既に言及したものを除いて多くのエラーが含まれているようです。 – frostmann

答えて

0

私は数時間の苦労の後に答えを見つけることができました。 TRUEとt.type

"SELECT DISTINCT j 
FROM Job j, Workflow w, Task t 
WHERE w.job.id = j.id AND 
t.workflow.id = w.id AND 
j.company.id = ? AND 
(SELECT COUNT(*) 
FROM Task t 
WHERE t.workflow.id = w.id AND 
t.completed = TRUE AND 
t.type != 0) = 0" 
関連する問題