Spring Data JPA 的规范如何真正起作用?

How do Specifications with Spring Data JPA really work?

例如,我的助手 class 具有规范。这是一个例子:

    public static Specification<Player> filterByName(String name) {
return ((root, query, criteriaBuilder) ->
        name == null ? null :  criteriaBuilder.like(root.get("name"), "%" + name + "%"));
    }

我稍后会用它们来调用 Repository。如果不是我创建的,我不明白 root、query、criteriaBuiler 的对象如何“出现”在上面的方法中。

非常感谢您的回答!

发生这种情况是因为根据您的声明,您的方法必须 return 一个实现具有三个参数的 Specification interface that contains the abstract toPredicate 方法的对象。 Java 编译器所做的是 returned 值和 lambda 表达式中的三个参数的类型推断,根据 toPredicate 方法的声明为它们分配类型,从而成功结束此过程.