【发布时间】:2016-11-22 05:04:39
【问题描述】:
0我有这个方法:
public List<Product> getProductsByListIds(List<Long> ids) {
String query = "from Product pr where pr.id in(:ids)";
List<Product> products= (List<Product>) getSession().createQuery(query)
.setParameterList("ids", ids).list();
return products;
}
这个方法还可以,我唯一的问题是ids.size() >1000
我正在努力为这个问题找到一个令人信服的解决方案。
【问题讨论】:
-
ids.size() > 100时有什么问题? -
您使用的是哪个 DBMS?某些 DBMS 确实对
IN列表的元素数量有限制。但我知道的唯一一个是 Oracle,那里的限制是 1000,而不是 100 -
in 子句是有限制的,这里我以100为例
-
为此您可以使用标准接口。请看docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/…
-
我使用 ORACLE 和 MySql
标签: java mysql sql oracle jdbc