我在JPA中有以下命名查询:
<named-query name="getAllListingsWithId">
<query>Select listing from ListedItemDetail listing where listing.listingId in :listingIds</query>
</named-query>
然后我调用运行代码:
List<Integer> listingIds = new ArrayList<>(); // [23, 46, 72]
Query query = em.createNamedQuery("getAllListingsWithId");
query.setParameter("listingIds", listingIds);
List<ListedItemDetail> listings = query.getResultList(); // [Object23, null, Object72]
但是,某些'listingIds'在数据库中不存在,因此我得到一个带有一些空值的resultList。如何有效地排除空值?目前我使用:
listings.removeAll(Collections.singleton(null));
我可以在namedQuery中执行吗?我认为它会更快。
使用MySQL,EclipseLink。感谢。
ListedItemDetail:
public class ListedItemDetail extends Item{
// Fields
}
public class Item{
protected int listingId;
// Other fields
}
orm.xml(xml定义的实体):
<entity class="package.Item">
<attributes>
<id name="listingId">
</id>
</attributes>
</entity>