В случае методов @Bean учитывается тип возвращаемого значения. Даже если вы, возможно, возвращаете TopLinkRepository из одного метода и HibernateRepository из другого, с точки зрения контейнера, все, что он знает, это то, что есть два компонента типа IRepository, и, следовательно, не понимает, что один аннотирован @Toplink и один из них аннотирован @ Hibernate.
У вас есть несколько вариантов здесь. Проще всего, учитывая вашу текущую конфигурацию, изменить типы возвращаемых данных, чтобы сделать их более конкретными.
Второй - оставить универсальные возвращаемые типы, но переместить аннотации квалификаторов @Toplink и @Hibernate на уровень метода @Bean.
Третий вариант - компонентное сканирование типов репозитория, вместо того, чтобы объявлять их как методы @Bean.
Третий подход обычно рекомендуется, учитывая, что вы уже используете @Inject для компонентов репозитория и пометили их @Named. Это делает их естественными кандидатами для компонентного сканирования в первую очередь. Проверьте Javadoc для @ComponentScan, чтобы узнать, как это сделать в мире классов @Configuration.