如何解决尝试在同一个 JPA 方法签名中使用“OR”和“AND”
findByFloorIdAndCategoryOrAreaIdAndCategory
我需要从同一个表中使用 ((flooId and category) or (areaId and category))
进行查询。
上面给定的名称不起作用。它抛出以下错误。
List<SpacetoDevice> spacetoDevices = spacetoDeviceRepository.findByFloorIdAndCategoryOrAreaIdAndCategory(id,category,id,category);
Error: with root causecom.azure.data.cosmos.CosmosClientException:
Gateway Failed to Retrieve Query Plan:
Message: {"Errors":["Invalid query. Specified duplicate parameter name '@category'."]}
解决方法
虽然可能隐藏了一个错误,但您确实不应该这样做。
查询派生有意不提供任何方法来控制 AND
和 OR
操作之间的优先级。查询派生背后的想法是为简单的方法名称创建查询,其中 SQL/JPQL 仅从方法名称就很明显。但是像 findByFloorIdAndCategoryOrAreaIdAndCategory
这样的名称不是您通常会使用的名称(我希望如此),因此您不应该使用。
改为选择更短、更好的名称并添加 @Query
注释或命名查询。
至于潜在的错误:如果您可以提供复制器,请在https://github.com/spring-projects/spring-data-jdbc/issues
报告版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。