如何从JPA查询中排除null结果

时间:2014-03-26 19:12:29

标签: mysql java-ee jpa eclipselink

我在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>

0 个答案:

没有答案