问题描述
select distinct * from folder_persons
where folder_id = 68652
AND person_id in
(select person_id from submissions where submissions.person_id = folder_persons.person_id AND submissions.date_applied >= folder_persons.created_date);
我可以在 Java find 中将此作为本机查询编写,但我想使用谓词来编写它,我该怎么做?
以下是我目前所拥有的:
//test data for list
Submission submission = new Submission();
submission.setPersonId(123);
List<Submission> submissions = new ArrayList<>();
submissions.add(submission);
try {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
Root<FolderPersons> from = query.from(FolderPersons.class);
//todo - how to create predicate for lines below?
Expression<String> inExpression = from.get();
Predicate inPredicate = inExpression.in(submissions);
CriteriaQuery<FolderPersons> selectQuery = query.select(from)
.where(builder.and(builder.equal(from.get(FOLDER_ID),folderId),inPredicate));
return entityManager.createquery(selectQuery).getResultList();
}catch...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)