OrderBy 不适用于 Spring Data JPA 中的 In 子句

OrderBy is not working with the In clause in Spring Data JPA

我有一个签名是这样的方法。

public Page<Config> searchByCriteria(Map<String, String> params, Pageable pageable) {
    //prework
    if (zoneIds.equals(BLANK_STRING)) {
        return repository.findByUserIdAndNameContains(userId, name, pageable);
    }
    List<Integer> zones = Arrays
            .stream(zoneIds.split(","))
            .distinct()
            .map(Integer::parseInt)
            .collect(toList());
    return repository.findByUserIdEqualsAndNameContainsAndZonesInAndOrderByUpdatedOnDesc(userId, name, zones, pageable);
}

此处,当附加 OrderBy 子句时,第二个查询不起作用。 但是,当我删除 OrderBy 子句时它工作正常。 eg: repository.findByUserIdEqualsAndNameContainsAndZonesIn(...) This works fine. 请建议我如何一起使用 In 和 OrderBy 子句。

这是我在堆栈跟踪中得到的错误。

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property inAnd found for type Integer! Traversed path: 

配置对象

    
@Entity 
public class Config extends AbstractEntity implements Serializable {{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer configId;


    private Integer userId;


    private String name;


    @Enumerated(EnumType.STRING)
    private State state;


    @ElementCollection
    @CollectionTable(name = "zone", joinColumns = @JoinColumn(name = "config_id"))
    @Column(name = "zone_id")
    private Set<Integer> zones = new HashSet<>();

    
    @Valid
    @ElementCollection
    @CollectionTable(name = "param", joinColumns = @JoinColumn(name = "config_id"))
    private Set<ApParam> apParams = new HashSet<>();

    
    private String remarks;
//getter
//setter

    }

我认为问题在于您将方法查询和排序依据与 And 连接起来。这应该有效:repository.findByUserIdEqualsAndNameContainsAndZonesInOrderByUpdatedOnDesc(userId, name, zones, pageable);

示例:https://www.baeldung.com/spring-data-sorting#1-sorting-with-the-orderby-method-keyword

文档参考:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation