我的potentialDonorFile有一个elementCollection causeOfDeath,我想过滤它们。
所以我有一个屏幕,它给了我一个causeOfDeath,我想要检索包含我搜索过的causeOfDeath的所有PotentialDonorFiles。
我无法真正开始工作..到目前为止我已尝试过:
ListView
但是当我这样做时,我总是得到:
Expression<List<CauseOfDeath>> listExpression = potentialDonorFileRoot.get(PotentialDonorFile_.causesOfDeath);
filterCondition = getInPredicateForStringExpression(searchCriteria.getCauseOfDeath(), cb, listExpression, filterCondition);
public <T extends Enum> Predicate getInPredicateForStringExpression(String filterValue, CriteriaBuilder cb, Expression<List<T>> expressions, Predicate filterCondition) {
return cb.and(filterCondition, expressions.in(filterValue));
}
&#39; UNDER_MAXIMUM_THERAPY&#39;是某种死亡原因(我的过滤价值)。
问题实际上是,如何使用条件api编写以下SQL:
Caused by: java.lang.IllegalArgumentException: Parameter value [UNDER_MAXIMUM_THERAPY] did not match expected type [java.util.Collection]
PotentialDonorFile中的CauseOfDeath声明(它是一个枚举):
select * from POTENTIAL_DONOR_FILE pdf, CAUSES_OF_DEATH cod
where cod.PDF_ID = pdf.ID AND cod.CAUSE_OF_DEATH = 'UNDER_MAXIMUM_THERAPY';
我尝试过使用SubQuery,但后来发现它无法使用,因为CauseOfDeath不是实体。