【发布时间】:2015-07-09 18:14:08
【问题描述】:
首先,我使用 OpenJPA JPQL 查询获取对象类 Product 的列表。类 Product 对应一个由 OpenJPA 映射的数据库表。它来自 Elastic Path 软件。
然后我试图从这些对象创建一个 Set。不能添加最后一个对象,因此 contains 表示该对象已经在集合中。为了便于理解,我遍历了 Set 但没有现有元素等于新对象。
此外,所有对象的 hashCode 都不同。
那是简化的代码:
List<Product> allProductsForPass = storeProductService.getProducts();
Set<Product> sortProducts = new TreeSet<Product>(new ProductSort());
for (Product iterProduct : allProductsForPass) {
if (sortProducts.contains(iterProduct)) {
for (Product sortProduct : sortProducts) {
log.debug("SortProductHashCode" + sortProduct.hashCode()
+ "; iterProductHashCode"
+ iterProduct.hashCode());
if (sortProduct.equals(iterProduct)) {
log.debug("SortProductFoundEqual:")
}
}
}
sortProducts.add(product);
}
【问题讨论】:
-
你的
equals呢? -
请贴出SdiProductSort的代码。
-
我们还需要 Product 的代码。
标签: java collections openjpa