我一直在尝试使用IN从数据库中获取值。我意识到我需要编写像
这样的JPA查询o.country IN (’UK’, ’US’, ’France’)
所以我试着写查询
List result = Playlist.find("id in ?", values).fetch();
其中values=set of integers
但无法在运行时编译
java.lang.ClassCastException: java.util.HashSet cannot be cast to java.lang.Integer
我该如何解决这个问题?
已修复
我也在google网上发布了这个,并得到了似乎有用的答案
List<Integer> countries = (list of integers for ’UK’, ’US’, ’France’)
List result = Playlist.find("id in (:countries)").bind("countries",
countries).fetch();
答案 0 :(得分:2)
我对你的问题的某些方面并不完全确定:
无论如何,这是我的代码库中的一个(修改过的,因此未经检查的)示例:
在JPA实体类中:
@NamedQuery(name = "findFoo", query = "select f from Foo f where f.state in :stateInList")
查询的使用方式如下:
final Query query = this.entityManager.createNamedQuery("findFoo");
final Set<FooState> states = new HashSet<FooState>(Arrays.asList(FooState.STARTED, FooState.FAILED));
query.setParameter("stateInList", states);
final List<Foo> retval = query.getResultList();
return retval;
HTH