在语义或性能方面,
cf.forEach(Entity.class)
.join(cf.forEach(Entity.class),
Joiners.filtering(myBiPredicate)))
...
和
cf.forEach(Entity.class)
.join(cf.forEach(Entity.class))
.filter(myBiPredicate)))
...
另外,Joiners
是否按给定的顺序执行?(例如,是否建议在参数列表的早期放置过滤器来修剪大量对?)
回答您的第一个问题-不,这两个约束之间没有实际区别。Joiners.filtering(...)
存在,因此您可以在ifExists(...)
调用中应用过滤器;在执行普通连接时,不妨在连接后执行一个过滤器。