我有一个带有Enum列的实体:
@Enumerated(EnumType.STRING)
@Column(name = "status", length = 20)
private OnboardingTaskStatus status;
枚举声明如下:
public enum OnboardingTaskStatus {
NEW,
IN_PROGRESS,
DISABLED;
}
我试图实现一个搜索规范:
Specification<OnboardingTasks> spec = (root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
if (params.getTitle() != null) {
predicates.add(cb.like(cb.lower(root.get("title")), "%" + params.getTitle().toLowerCase() + "%"));
}
if (params.getStatus() != null) {
predicates.add(cb.equal(root.get("status"), params.getStatus()));
}
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
};
return onboardingTasksService
.findAll(spec, pageable)
.map(onboardingMapper::taskToTaskDTO);
我得到一个错误:
OnboardingTaskStatus.2769df0841;嵌套异常是java.lang.IllegalArgumentException: No enum constant OnboardingTaskStatus。[2769df0841]与根本原因java.lang.IllegalArgumentException: No enum constant OnboardingTaskStatus.2769df0841
我应该使用像
这样的转换器吗?@Convert(converter = OnboardingTaskStatus.class)
在JPA 2.1中使用@Convert正确映射枚举
是否有更好的方法来实现这一点?
您没有显示params.getStatus()
是什么,所以很难帮助您。从异常所说的内容来看,它返回的对象不是枚举类型OnboardingTaskStatus
。