JPA规范:选择列表属性包含具有特定值的项目的项目

时间:2018-05-16 22:44:48

标签: java spring-boot jpa

我正在尝试用JPA规范解决以下问题:

考虑以下课程:

public class Language {
    private String name;
    ...
}

public class Person {
    private List<Language> languages;
    ...
}

如何选择所有使用名称为Person的语言的x?我正在寻找使用CriteriaBuilder的解决方案,该解决方案应生成Predicate我可以&#39;和&#39;与其他谓词一起使用。

提前致谢。

1 个答案:

答案 0 :(得分:0)

实际上非常简单:

<button class="bt-save" ng-disabled = "allowButtonClick()">Save</button>

因此,您基本上通过相应的关联加入语言,然后添加与您的标准匹配所连接实体的必需属性的CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Person> query = cb.createQuery(Person.class); Root<Person> root = query.from(Person.class); ListJoin<Person, Language> langJoin = root.join(Person_.langs); query.where(cb.equal(langJoin.get(Language_.name), lang)); 谓词。