This question already has answers here:
How to load a large number of strings to match with oracle database?
                                
                                    (3个答案)
                                
                        
                                3年前关闭。
            
                    
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
我正在尝试找到一个令人信服的解决方案。

最佳答案

我的建议是退后一步,看看设计和您要实现的目标,将数百个参数传递到SQL语句中并不是很有效,如果这是最优雅的解决方案,我会感到惊讶根据您的要求。

在不了解有关如何调用此方法以及此ID列表从何而来的更多信息的情况下,很难给出具体建议,但是,我建议您在可能的情况下考虑使用联接。

10-02 06:09