Java CriteriaBuilder不返回任何内容
我在做CriteriaBuilder。如果记录存在,它将正确返回一个值。 但是我需要查询返回一个值,例如,一个空字符串或“,”如果没有找到记录。 目前,如果找不到记录,则不会返回任何内容。它只是跳跃Java CriteriaBuilder不返回任何内容,java,hibernate,jpa,criteria,criteria-api,Java,Hibernate,Jpa,Criteria,Criteria Api,我在做CriteriaBuilder。如果记录存在,它将正确返回一个值。 但是我需要查询返回一个值,例如,一个空字符串或“,”如果没有找到记录。 目前,如果找不到记录,则不会返回任何内容。它只是跳跃 CriteriaBuilder-CriteriaBuilder=entityManager.getCriteriaBuilder(); CriteriaQuery-CriteriaQuery=criteriaBuilder.createQuery(Long.class); Root stock=cr
CriteriaBuilder-CriteriaBuilder=entityManager.getCriteriaBuilder();
CriteriaQuery-CriteriaQuery=criteriaBuilder.createQuery(Long.class);
Root stock=criteriaQuery.from(stock.class);
criteriaQuery.select(stock.get(storage))
.where(库存获取(项目编号)in(eans));
返回entityManager.createQuery(criteriaQuery.getResultList();
所以现在
是1,2,4
而不是r 1,2,4
如果3不存在
请帮助。我认为您可以使用IFNULL解决此问题:
criteriaQuery.select(criteriaBuilder.selectCase().when(criteriaBuilder.isNull(stock.get(storage),-1).otherwise(stock.get(storage)))
我没有测试这段代码,但我认为这是正确的方向。请尝试向我们提供最新结果我想你误解了这个问题。这不是关于返回
null
或空列表,而是关于在不合适ID的结果列表中有一些奇怪的0
条目。例如,如果他在数据库中有ID 1、2、3、4和5,并且他的查询将只与ID 3匹配,那么他想要一个带有[0、0、3、0、0]
的列表。现在不要问我结果列表中那些0
的意义是什么……这可能只有OP知道。是的,没错。它不一定是零。理想情况下,一个空字符串应该替换未找到的记录。糟糕,你说得对。我误解了。我会尽力帮你的。我不知道如何更改我的查询。如果你能帮忙,那就太好了。请注意,你不能在长字符串列表中添加空字符串。我将默认值设置为-1
criteriaQuery.select(criteriaBuilder.selectCase().when(criteriaBuilder.isNull(stock.get(storage),-1).otherwise(stock.get(storage)))