我有一个服务(用于泛型类型),它使用JpaRepository的findAll()函数。
public class SomeService<EntityClass>{
@Autowired
JpaRepository<EntityClass> repository;
JpaRepository getRepository(){}
}
但它给出了这个错误:
找不到[org.springframework.data.jpa.repository.JpaRepository]类型的限定bean用于依赖:预期至少有1个bean可以作为此依赖项的autowire候选者。依赖注释
有没有办法动态构建JpaRepository? 服务类不会为每个实体提供特定的实现。 即我需要像这样使用Service类:
@Autowired
SomeService<Fruit> fruitService;
这意味着,Service class在编译时不会了解实体类。
现在,如果我创建扩展JpaRepository的存储库,那么它仍然无法工作: 说我创建:
FruitRepository extends JpaRepository<Fruit, Long>
PersonRepository extends JpaRepository<Person, Long>
然后spring给出了这个错误:
org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有定义[org.springframework.data.jpa.repository.JpaRepository]类型的限定bean:期望的单个匹配bean但找到2
我必须这样做:
public class PersonService<Person>{
@Autowired
PersonRepository repository;
JpaRepository getRepository() {return repository;}
}
当然,我的实体并不是真正的水果和人,但重点是他们所有人都会有共同的服务&#34;具有相同的实现。
如何实现,以便只能定义单个服务类并通过指定实体类来自动装配它?