gpt4 book ai didi

java - 在 jpa 查询中使用 in 子句给出 Operand should contain 1 column(s) 错误

转载 作者:行者123 更新时间:2023-11-29 02:43:40 26 4
gpt4 key购买 nike

我正在尝试使用 in jpa 查询中的子句,但它给出了 Operand should contain 1 column(s)错误。

这是我的查询:

@Query(value = "select e from Table e where " +
"((:plantId is null and :unitId is null and :functionalLocationId is null) or" +
" (:functionalLocationId is not null and e.functionalLocation.id in (select f.id from FunctionalLocation f where f.id = :functionalLocationId)) or" +
" (:unitId is not null and :functionalLocationId is null and e.functionalLocation.unit.id in (select u.id from Unit u where u.id = :unitId)) or" +
" (:plantId is not null and :unitId is null and :functionalLocationId is null and e.functionalLocation.unit.plant.id in (select p.id from Plant p where p.id = :plantId))) and" +
"((:equipmentTagNumbers) is null or e.tagNo in (:equipmentTagNumbers)) and" +
"(:startDate is null or e.lastUpdateDate >= :startDate) and" +
"(:endDate is null or e.lastUpdateDate <= :endDate)" +
"order by e.id desc")

:equipmentTagNumbers属性是 Lis<String>如果我为它发送 null,查询将按我预期的方式工作,但是当我发送实际数据时,它会给出错误。

有什么建议吗?

最佳答案

据我所知,如果您的参数是一个 array,那么在 jpa 查询中没有 isEmptylength,就像在这种情况下一样。 @SOlsson 是对的 (1,2,4 is null or... is not valid Sql 所以我决定在我的查询中添加一个额外的参数以检查它的 null 或者不是这样我最后的查询:

        ...
"((:hasEquipmentNumbers) is null or e.tagNo in (:equipmentTagNumbers)) and"
...

:hasEquipmentNumbers 是一个 boolean 值,我可以将其分配给 null 所以如果它为 null 则没有人受伤,如果不是我可以运行我的 IN没有问题的条款。

PS:我标记了他的答案因为它看起来像一个答案。但我按照我的解释实现了。

关于java - 在 jpa 查询中使用 in 子句给出 Operand should contain 1 column(s) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46402827/

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