【发布时间】:2021-11-04 06:18:10
【问题描述】:
我有一个方法,它的签名是这样的。
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
}
【问题讨论】:
-
能否提供Config实体对象?
标签: spring-boot spring-mvc spring-data-jpa