我需要得到两组整数(记录ID)之间的差异。第一组存储在文本文件中,第二组存储在 mysql 数据库中。我有两个选择:
1- 从数据库中读取所有 id,将它们加载到 java 对象,从文本文件中加载所有 id 并使用
Sets.difference(dbset, fileset);
2- 仅读取文本文件 id 并使用 Hql 查询来获取差异:
public List getDiff(Set<Integer> ids){
Query query;
query = getSession().createQuery("from myset s where s.id not in (:ids)");
query.setParameterList("ids", ids);
return query.list();
}
我发布了这个问题,因为这些集合可能很大,而且我不知道 Hibernate / Mysql 查询是否有任何限制(Hibernate 将该查询翻译为“不在(1,2,3,...)中)或否则,我可以轻松达到 jvm 内存限制。