猿问

如何修复“未找到类型 [entity] 的属性 [repositoryMethod]!

我正在尝试为从另一个实体继承的实体设置一个 Spring Data Jpa 存储库。


我正在使用 Spring Boot 2.1.6 和 Spring Data Jpa。我已经研究了这个问题并查看了文档,但我发现的案例虽然相似,但没有一个很好地展示了当我们有实体继承时如何处理类的存储库。


这里我有主要课程:


@Entity

@Inheritance(strategy = InheritanceType.JOINED)

public abstract class Person implements Serializable {


    private static final long serialVersionUID = 1L;


    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;

    private String name;


    // Getters and setters omitted

}

这里是继承自 Person 的类:


@Entity

@PrimaryKeyJoinColumn(name="id")

public class Driver extends Person   {


    private String vehicleModel;


    // Getters and setters omitted

}

所以我创建了一个过滤器以在存储库中使用:


public class DriverFilter {


    private String vehicleModel;


    // Getters and setters omitted

}

在我创建 DriverQueries 接口之后:


public interface DriverQueries {


    public Page<Driver> filter(DriverFilter filter, Pageable pageable);


}

然后我做了它的实现:


public class DriverImpl implements DriverQueries {


    @Override

    public Page<Driver> filter(DriverFilter filter, Pageable pageable) {

        // code omitted

    }


}

我创建基本存储库:


@NoRepositoryBean

public interface People<T extends Person> extends JpaRepository<T, Long> {

}

最后,我为继承的类创建存储库:


@Repository

public interface Drivers extends People<Driver>, DriverQueries {


}

如果我为一个普通类创建一个存储库,遵循与前一个相同的逻辑,一切都会完美无缺。

有谁知道可能出了什么问题?

谢谢你!


白衣非少年
浏览 173回答 1
1回答

斯蒂芬大帝

如果我们通过类比父类 ( DriverQueries&nbsp;) -&nbsp;DriverQueriesImpl为类DriverImpl分配正确的名称,此错误就会消失。在这种情况下,被继承的类应该被称为父类加上后缀Impl。Spring对此很严格。
随时随地看视频慕课网APP

相关分类

Java
我要回答