Spring-data:如何使用规范查询子类型

jhe*_*hek 8 spring jpa spring-data spring-data-jpa

我有三个这样的人:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "TYPE")
public abstract class A
{
    // fields, getters, setters
}

@Entity
@DiscriminatorValue("B")
public class B extends A
{
    // fields, getters, setters
}

@Entity
@DiscriminatorValue("C")
public class C extends A
{
    // fields, getters, setters
}
Run Code Online (Sandbox Code Playgroud)

我也有这样的存储库:

@Repository
public interface ADao extends JpaRepository<A, Long>, JpaSpecificationExecutor<A> 
{
}
Run Code Online (Sandbox Code Playgroud)

在这个存储库中,我有一个方法

List<A> findAll(Specification<A> s)
Run Code Online (Sandbox Code Playgroud)

这是在JpaSpecificationExecutor中定义的.

我的问题是:如何使用仅在B中声明的字段上的规范提出请求?

谢谢你,杰罗姆

小智 1

创建一个

@Repository public interface BDao extends ADao<B>{}
Run Code Online (Sandbox Code Playgroud)

public interface ADao extends JpaRepository<T extends A, Long>, JpaSpecificationExecutor<A> 
Run Code Online (Sandbox Code Playgroud)

然后注入BDao来查询B类型