在我的用例中,我有以下设置:合同有一个人和一个提供者相关联。因此,合同在人员表和提供者表上具有外键。因此,在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的上下文中工作,所以我只能定义规范而不是完整的查询。 : - )
答案 0 :(得分:1)
好吧,也许我应该删除这个问题,因为我意识到它是多么愚蠢。我现在就离开它,所以有人可以从中学习: - )
不是在Join上构建谓词,而是可以在Root上执行
SMAppServicesMonoBehaviour