首页 > 解决方案 > JPA EntityManager 和查询方法组合 No property found for type

问题描述

所以我的问题是我有一个实现 JpaRepository 的接口和我的自定义接口,该接口在另一个使用 EntityManager 进行自定义查询的类中实现。

当我尝试运行代码时,出现以下异常:

No property [custom methods name] found for type [Entity]

我自动装配的存储库:

@Repository
public interface FooRepository extends JpaRepository<Foo, Long>, FooCustomRepository {
}

自定义存储库接口:

public interface FooCustomRepository {

    List<Foo> getFoos();

}

自定义存储库的实现:

public class FooCustomRepositoryImpl implements FooCustomRepository {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public List<Foo> getFoos() {
        [query]
    }
}

我以前从未见过此错误,但我一直在以这种方式使用自定义存储库。

标签: javaspringspring-bootjpa

解决方案


Spring 无法在简单类中获取 bean。

如果您需要 spring 中的 bean,则需要从简单类中制作 bean。从 bean 可以访问其他 bean。

因为,当您添加注释时@Repository,将类FooCustomRepositoryImpl制作为 bean 并查找其他 bean。

我认为,该类代码FooCustomRepositoryImpl需要注释@Repository

@Repository
public class FooCustomRepositoryImpl implements FooCustomRepository {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public List<Foo> getFoos() {
        [query]
    }
}

文章中所述

以及类中的代码示例CustomItemRepositoryImpl


推荐阅读