2012-01-25 50 views
0

我寫過一個查詢,如果在MySql Workbench中使用,那麼它將很好地工作,但如果在我的Java EE項目中使用它,則不會編譯!Java EE沒有使用IN運算符編譯查詢

這裏的查詢:

@NamedQuery(name = "Book.findByCourse", query = "SELECT b FROM Book b WHERE b.teaching IN (SELECT T.id FROM Teaching T, Course C WHERE T.course = C.id AND C.id = :course)") 

查詢工作正常,但我已經在我的Java EE項目得到這個錯誤:

錯誤編譯查詢[...],行0,第0列:無效的IN表達式參數[SubqueryNode Left:null Right:null],類型爲[entity.Teaching]的預期參數。

它有什麼問題?

+0

對不起,請問:你是否已經定義了'Teacher'實體? – adarshr

+0

我已經完成了所有實體:) – StepTNT

+0

如果用常數值或'?'(問號字符)替換':course',查詢是否會編譯? –

回答

0

首先你想只在你的子查詢中選擇ID,然後把它比作全POJO對象(不知道這是可能的),

在我看來,你應利用本地查詢了(的@ NamedNativeQuery)來實現你想要的或者使用Criteria Builder,比如here