Spring Boot JPA CrudRepository

A.C*_*oun 8 spring spring-data spring-data-jpa spring-boot

我正在使用Spring Boot + Spring Data JPA并在尝试注入扩展CrudRepository的类时遇到此问题:

引起:org.springframework.beans.factory.BeanCreationException:创建名为'topicRepository'的bean时出错:无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)

存储库类:

public interface TopicRepository extends CrudRepository<Topic, Integer> {}
Run Code Online (Sandbox Code Playgroud)

服务类别:

@Service
public class TopicService {

      @Autowired
      private TopicRepository topicRepository;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Tre*_*Bye 9

我遇到了同样的问题,我通过切换Spring Boot版本修复了它.更改Spring Data JPA版本什么也没做(这是我认为错误的地方),所以我认为Spring Boot 1.5.1版本中存在一个错误.我切换回1.4.3版本,错误消失了.我没有尝试后续/不同版本,因此您可能只需要试验您的依赖项及其版本.

对于记录,您可以使用带有注释的服务类@Repository,它不应该有任何区别.我一直在使用service/dao模式以相同的方式设置这些应用程序,而且注释从未过于挑剔.希望这可能有助于其他Spring Boot开发流程突然抛出错误的人!


And*_*son 5

您正在使用哪些版本的spring-data-commons和spring-data-jpa。我只是使用spring-data-commons 1.13.x和spring-data-jpa 1.10.x遇到了这个问题。将spring-data-jpa升级到1.11.x为我解决了这个问题。


Mac*_*ski 0

确保:

1) TopicRepository 注释为@Repository.

2)您已配置扫描包:

<jpa:repositories base-package="mypkg.repositories"></jpa:repositories>
Run Code Online (Sandbox Code Playgroud)

  • 两者都没有必要做。 (2认同)