【发布时间】:2019-01-29 19:18:04
【问题描述】:
我正在尝试获取嵌套对象属性,但得到了非法参数异常。
AuditTestingPlanSpecification name = new AuditTestingPlanSpecification(new SearchCriteria("auditPlanId.auditPlanEntity", ":",dates));
Page<AuditTestingPlanMaster> a = auditTestingPlanMasterRepository.findAll(name, ten);
请在下面找到代码,
public class AuditTestingPlanSpecification implements Specification<AuditTestingPlanMaster> {
private SearchCriteria criteria;
public AuditTestingPlanSpecification(SearchCriteria searchCriteria) {
this.criteria = searchCriteria;
}
@Override
public Predicate toPredicate(Root<AuditTestingPlanMaster> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
if (root.get(criteria.getKey()).getJavaType() == String.class) {
return builder.like(root.<String>get(criteria.getKey()), "%" + criteria.getValue().get(0).toString() + "%");
} else {
return builder.equal(root.get(criteria.getKey()), criteria.getValue().get(0).toString());
}
return null;
}
}
类 SearchCriteria.java
public class SearchCriteria {
public SearchCriteria(String key, String operation, List<Object> value) {
super();
this.key = key;
this.operation = operation;
this.value = value;
}
private String key;
private String operation;
private List<Object> value;
// getters & setters
}
类 AuditTestingPlanMaster.java
@Entity
@Table(name = "audit_testing_plan_master")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class AuditTestingPlanMaster implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "risk_area_id")
private Long riskAreaId;
@Column(name = "expected_revert_date")
private Instant expectedRevertDate;
@Column(name = "created_date")
private Instant createdDate;
@Column(name = "last_modified_date")
private Instant lastModifiedDate;
@JoinColumn(name = "audit_plan_id", referencedColumnName = "id")
private AuditPlanMaster auditPlanId;
//getters & setters
}
类 AuditPlanMaster.java
@Entity
@Table(name = "audit_plan_master")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class AuditPlanMaster implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;
@Column(name = "remarks", length = 255)
private String remarks;
@Column(name = "audit_plan_entity", length = 50)
private String auditPlanEntity;
@Column(name = "start_date")
private Instant startDate;
@Column(name = "end_date")
private Instant endDate;
//getters & setters
}
我想获取 AuditPlanMaster.auditPlanEntity 字符串与提供的过滤器值匹配的所有 AuditTestingPlanMaster 对象。
提前感谢您的时间和帮助。
【问题讨论】:
-
我也遇到了同样的问题,你有什么发现吗?
标签: spring-boot jpa