gpt4 book ai didi

spring-data - Bean 名称不明确 两次匹配同一个 bean

转载 作者:行者123 更新时间:2023-12-04 02:45:35 25 4
gpt4 key购买 nike

我正在尝试使用 spring-data-jpa 和 spring-data-mongodb。在部署时,我的几个存储库部署,直到一个(每次随机一个)部署失败,错误为

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001414:   Bean name is ambiguous. Name    za.co.knonchalant.dead.dao.repositories.UserRepository resolves to beans: 
- CdiRepositoryBean: type='za.co.knonchalant.dead.dao.repositories.UserRepository', qualifiers=[@javax.enterprise.inject.Default(), @javax.enterprise.inject.Any()],
- CdiRepositoryBean: type='za.co.knonchalant.dead.dao.repositories.UserRepository', qualifiers=[@javax.enterprise.inject.Default(), @javax.enterprise.inject.Any()]"}}

它似乎两次匹配相同的界面 - 知道可能发生什么吗?
UserRepository界面是
public interface UserRepository extends LocationRepository<User> { }

LocationRepository是位置的通用根界面,看起来像
@NoRepositoryBean
public interface LocationRepository<T> extends JpaRepository<T, String> {
List<T> findByPositionWithin(Circle c);

List<T> findByPositionNear(Point p, Distance distance);

List<T> findByPositionWithin(Box b);
}

我的配置,我并不过分自信,是
@Configuration
@EnableJpaRepositories
public class CdiConfig {
@Produces
@Dependent
@PersistenceContext(unitName = "mongo-ogm")
public EntityManager entityManager;

public
@Bean
Mongo mongo() throws Exception {
return new Mongo("localhost");
}

@Produces
public @Bean MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(), "mydatabase");
}
}

随着 persistence.xml根据以下内容 - 这是合适的供应商吗?
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="mongo-ogm" transaction-type="JTA">
<provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/>
<property name="hibernate.ogm.datastore.database" value="database"/>
<property name="hibernate.ogm.datastore.host" value="localhost"/>
<property name="hibernate.ogm.datastore.provider" value="MONGODB"/>
<property name="hibernate.ogm.datastore.create_database" value="true"/>
</properties>
</persistence-unit>
</persistence>

最佳答案

我想这两个库都具有相同的 bean,因此您需要将提供的范围添加到这些库之一的 Maven pom.xml 中。看起来 Spring 正在多个地方找到相同的 bean。

关于spring-data - Bean 名称不明确 两次匹配同一个 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40287158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com