我正在按照本教程在应用程序中设置搜索
https://www.mkyong.com/spring-boot/spring-boot-hibernate-search-example/
我认为我的主要问题是针对以下课程
@EnableAutoConfiguration
@Configuration
public class HibernateSearchConfiguration {
@Autowired
private EntityManager bentityManager;
@Bean
HibernateSearchService hibernateSearchService() {
HibernateSearchService hibernateSearchService = new HibernateSearchService(bentityManager);
hibernateSearchService.initializeHibernateSearch();
return hibernateSearchService;
}
}
运行该应用程序时,我得到
***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'hibernateSearchService', defined in class path resource [myapp/configuration/HibernateSearchConfiguration.class], could not be registered. A bean with that name has already been defined in file [/home/arya/Documents/workspace-spring-tool-suite/MyApp/target/classes/myapp/service/HibernateSearchService.class] and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
如果我删除
@Bean
HibernateSearchService hibernateSearchService() {
HibernateSearchService hibernateSearchService = new HibernateSearchService(bentityManager);
hibernateSearchService.initializeHibernateSearch();
return hibernateSearchService;
}
从上面的类中启动应用程序。
下面是我的服务班
@Service
public class HibernateSearchService {
@Autowired
private final EntityManager centityManager;
@Autowired
public HibernateSearchService(EntityManager entityManager) {
super();
this.centityManager = entityManager;
}
public void initializeHibernateSearch() {
try {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(centityManager);
fullTextEntityManager.createIndexer().startAndWait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Transactional
public List<Property> fuzzySearch(String searchTerm) {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(centityManager);
QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Property.class).get();
Query luceneQuery = qb.keyword().fuzzy().withEditDistanceUpTo(1).withPrefixLength(1).onFields("name")
.matching(searchTerm).createQuery();
javax.persistence.Query jpaQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, Property.class);
// execute search
List<Property> BaseballCardList = null;
try {
BaseballCardList = jpaQuery.getResultList();
} catch (NoResultException nre) {
;// do nothing
}
return BaseballCardList;
}
}
知道为什么会这样吗?
答案 0 :(得分:0)
您两次制作相同的豆子
在这里
@Bean
HibernateSearchService hibernateSearchService()
然后在这里
@Service
public class HibernateSearchService
要么删除其中之一,要么将名称设置为@Bean(name="someNameOfYours")
或@Service("someOtherName")