用该项目合并另一个项目,启动时不报错,运行到discussRepository.saveAll()
方法会遇到如下报错:
Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.course.server.mapper.my.DiscussPostRepository.saveAll
是结合ElasticSearch时报错,DiscussPostRepository是:
/*
ElasticsearchRepository:父接口,其中已经事先定义好了对es服务器访问的增删改查各种方法。Spring会给它自动做一个实现,我们直接去调就可以了。
*/
@Repository
public interface DiscussPostRepository extends ElasticsearchRepository<DiscussPost, String> {
}
,它不需要有.xml的写sql的文件,另一个项目就可以正常运行。不知道为什么结合到这个项目会报这个错。
我使用的ElasticSearch都是<elasticsearch.version>7.12.0</elasticsearch.version>
。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.4.3</version>
</dependency>
mybatis都是:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
求答,谢谢老师。
在尝试解决这个问题时遇到了另一个问题,@Mapper+@Repository无法把Mapper接口注入,会报错Consider defining a bean of type ‘XXX’ in your configuration.
,必须通过@MapperScan才能注入,不知道为什么。
看网上说,可以通过@EnableElasticsearchRepositories(basePackages = "com.course.server.mapper.my.elasticsearch")
来解决第一个问题,但是使用该注释会启动时出现如下报错:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘discussPostRepository’: FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException。
如果我不把DiscussPostRepository类放在mapper目录下,而是放在config目录下,并且不加@EnableElasticsearchRepositories
注释,那么会启动时出现Consider defining a bean of type ‘XXX’ in your configuration.
报错。
调试时可以看出DiscussPostRepository的区别,第二张图是正确的。