我需要在以下 JPQL 查询中通过 IN 表达式比较可为空的实体属性:
@NamedQuery(name = "query",
query = "SELECT e FROM MyEntity e WHERE e.status IN :statuses")
现在,我喜欢显示的集合值输入参数 statuses
可选择包含null
为元素:
final List<MyEntity> actual = entityManager.createNamedQuery("query", MyEntity.class)
.setParameter("statuses", Arrays.asList(null, 1L))
.getResultList();
但是,使用 Hibernate/Derby 时,实际结果列表仅包含具有状态1L
但不包含 的实体null
。
我在 JPA 2.2 规范中没有找到关于这个案例的任何内容。我错过了什么还是这个供应商特定的?
这个问题的答案只能解决我的部分问题。在他们提出的解决方案中,null
比较被硬生化到查询中,无法通过集合值参数进行控制。