我有一个ID字符串列表,想要使用Hibernate获取这些ID对应的行。 TrackedItem
是一个Hibernate/JPA实体(如果我的命名混淆了,请见谅)。
我的代码如下:
String idsText = "380, 382, 386";
ArrayList<Long> ids = new ArrayList<Long>();
for (String i : idsText.split(","))
{
ids.add(Long.getLong(i));
}
List<TrackedItem> items = TrackedItem.find("id IN (?)", ids).fetch();
但是这个方法失败了:JPAQueryException
发生:在models.TrackedItem
上执行查询时出错,其中id IN (?):java.util.ArrayList
无法强制转换为java.lang.Long
。
我该如何让IN
部分工作?谢谢。
Long.getLong(i)
并不是你想象中的那样。请使用Long.parseLong(i)
代替。参见https://dev59.com/R2s05IYBdhLWcg3wNPS7 - Natix