如何将CriteriaBuilder谓词与给定实体匹配?

时间:2016-01-18 16:05:31

标签: criteria-api

在我的用例中,我有以下设置:合同有一个人和一个提供者相关联。因此,合同在人员表和提供者表上具有外键。因此,在CriteriaApi中,我加入了合同和人员和提供者:

Root<Contract> contract = ...
Join <Contract, Person> person = contract.join(Person.class);
Join <Contract, Provider> provider = contract.join(Provider.class);

构建用于检查某个人的某些值的谓词非常有效,例如

cb.like(person.get(Person_.lastname), lastname);

对于提供者而言,情况有所不同,因为我已经有了ProviderEntity来加入。但我没有办法告诉CriteriaApi某种方式

cb.is(provider.get(Provider_), provider);

如果我已经拥有包含主键的实体(而不是在Provider_中映射),那么基于某些字段搜索提供程序似乎有点愚蠢。

因为我在Spring Data的上下文中工作,所以我只能定义规范而不是完整的查询。 : - )

1 个答案:

答案 0 :(得分:1)

好吧,也许我应该删除这个问题,因为我意识到它是多么愚蠢。我现在就离开它,所以有人可以从中学习: - )

不是在Join上构建谓词,而是可以在Root上执行

SMAppServicesMonoBehaviour