2012-01-25 46 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