我使用eclipselink 2.5.2并尝试执行查询:
select bm.id from Bombom bm join Rosquinha r
where bm.nb = :numeroBombom and
r.tipoRosquinha in :tiposRosquinha and
r.status = :statusRosquinha and
bm.situacao.id in :situacoesBombom
Passing parameter as a list, like:
QueryParameter param = new QueryParameter("situacoesBombom", Arrays.asList(1, 2, 3, 4));
query.setParameter(param.getKey(), param.getValue());
但是除了这个查询执行没有错误,过滤器没有正确执行。它就像没有IN子句一样执行,给我返回了很多Bombom ID。
我看到我的同事做了这样的查询:" bm.situacao.id in(:situacaoBombom1,:situacaoBombom2,:situacaoBombom3)"并单独传递IN的每个参数,但我认为它应该是我需要的方式吗?