Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JpaRepository注入泛型类时的NonuniqueBeandFinitionException_Java_Generics_Spring Boot_Autowired - Fatal编程技术网

Java 将JpaRepository注入泛型类时的NonuniqueBeandFinitionException

Java 将JpaRepository注入泛型类时的NonuniqueBeandFinitionException,java,generics,spring-boot,autowired,Java,Generics,Spring Boot,Autowired,如何将存储库注入泛型类 public class FruitComboBox<T extends Fruit> extends ComboBox { @Autowired private JpaRepository<T, Integer> repository; ... } public class FruitMarket { @Autowired FruitComboBox<Apple> appleCombobo

如何将存储库注入泛型类

public class FruitComboBox<T extends Fruit> extends ComboBox {

    @Autowired
    private JpaRepository<T, Integer> repository;
    ...
}

public class FruitMarket {

    @Autowired
    FruitComboBox<Apple> appleCombobox; // Apple extends Fruit

    @Autowired
    FruitComboBox<Orange> orangeCombobox; // Orange extends Fruit

    ...
}
公共类FruitComboBox扩展了ComboBox{
@自动连线
私有JPA存储库;
...
}
公营水果市场{
@自动连线
水果组合框appleCombobox;//苹果延伸水果
@自动连线
水果组合框橙色组合框;//橙色延伸水果
...
}
我还有两个存储库

@Repository
public interface AppleRepository extends JpaRepository<Apple, Integer> {
}

@Repository
public interface OrangeRepository extends JpaRepository<Orange, Integer> {
}
@存储库
公共接口AppleRepository扩展了JpaRepository{
}
@存储库
公共接口OrangeRepository扩展了JpaRepository{
}
我认为,FruitComboBox中的通用存储库应该根据它的T解析为两个现有存储库之一,并由Spring自动连接


nouniquebeandDefinitionException:预期为单个匹配bean,但发现2个在运行时发生(不是在应用程序启动时)。所以我假设在运行时所有类型都已定义,Spring已经知道T的具体类型。

Spring数据需要在引导时知道存储库所代表的实体。这意味着您不能在自动布线期间将其保留为
通用参数

创建一个单独的界面,如下所示

@Repository
public interface MyGenericRepository<T> extends JpaRepository<T, Integer>{

}
@存储库
公共接口MyGenericRepository扩展了JpaRepository{
}
现在,您应该能够使用特定类型(而不是泛型类型)自动关联它。这是通用的

@Autowired
private MyGenericRepository<Apple, Integer> repository;
@Autowired
私人MyGenericRepository


还可以尝试对ID使用
Long

谢谢,但我研究了自动连接实际存在的存储库的可能性。我给出了一个更精确的定义,请看问题,在这方面有什么进展吗?我有一个类似的问题,对我来说,这听起来像一个错误!