Spring数据:Autowire JpaRepository(通用类型)

时间:2015-07-01 06:50:25

标签: spring generics spring-data

我有一个服务(用于泛型类型),它使用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;具有相同的实现。

如何实现,以便只能定义单个服务类并通过指定实体类来自动装配它?

0 个答案:

没有答案