gpt4 book ai didi

java - 如何在JPA中获取可以为空值的数据

转载 作者:行者123 更新时间:2023-12-01 11:04:36 27 4
gpt4 key购买 nike

我正在尝试从表中过滤具有空值的数据。我试图通过搜索两个字段来获取数据,其中 name 不是可为空的字段,而 ProductGroup.name 是可为空的字段。这是我的代码:

    public static Page page(int page, int pageSize, String sortBy, String order, String filter) {
if (page < 1) page = 1;
Long total = (Long) JPA.em()
.createQuery("select count(c) from InventoryItem c where lower(c.name) like :filter or c.productGroup.name=:filter ")
.setParameter("filter", "%" + filter.toLowerCase() + "%")
.getSingleResult();
@SuppressWarnings("unchecked")
List<InventoryItem> data = JPA.em()
.createQuery("from InventoryItem c where lower(c.name) like :filter or c.productGroup.name=:filter order by c." + sortBy + " " + order)
.setParameter("filter", "%" + filter.toLowerCase() + "%")
.setFirstResult((page - 1) * pageSize)
.setMaxResults(pageSize)
.getResultList();
return new Page(data, total, page, pageSize);
}

如果productGroup.name中存在空值,它不会获取数据,但当我存储productGroup.name时,它会显示数据。我做错了吗??

谢谢

最佳答案

如果您想选择名称类似于过滤器或 null 的行,则必须将其更改为:

...或(c.productGroup.name=:filter 或 c.productGroup.name 为 null)

您不能将过滤器设置为 null 并期望返回名称为 null 的行...

关于java - 如何在JPA中获取可以为空值的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com