我在尝试启动 Spring Boot 应用程序时收到以下错误:注意:此错误只有当我把发生@Autowired批注过IDeviceRepository iDeviceRepository;的DeviceDao.java类我还没有得到DeviceDao.java持久化到数据库 - 但正在创建实体> *************************** > APPLICATION FAILED TO START> ***************************> > Description: > Field iDeviceRepository in com.abc.dao.DeviceDao required a bean named 'entityManagerFactory' that could not be found. > Action:> Consider defining a bean named 'entityManagerFactory' in your configuration.这是项目的目录结构:├───src│ ├───main│ │ ├───java│ │ │ └───com│ │ │ └───abc│ │ │ ├───controller│ │ │ ├───dao│ │ │ │ └───repositories│ │ │ ├───init│ │ │ ├───model│ │ │ ├───service│ │ │ └───util│ │ │ ├───common│ │ │ ├───enums│ │ │ ├───exceptions│ │ │ └───interfaces│ │ └───resources│ │ ├───static│ │ │ ├───css│ │ │ ├───fonts│ │ │ ├───img│ │ │ └───js│ │ └───templatescom.abc.init.Application.javapackage com.abc.init;@SpringBootApplication@EnableJpaRepositories("com.abc.dao.repositories")@EntityScan(basePackages = { "com.abc.model" })@ComponentScan(basePackages={ "com.abc.controller", "com.abc.service", "com.abc.dao" })public class Application{ public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
2 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
在 spring-boot 中,您不需要使用存储库注释来注释存储库类。
@Repository
您只需要在您的界面上扩展 JPARepository,Spring-boot 将负责其余的工作。例如:
public interface YourRepository extends JpaRepository<YourDomain, Serializable> {
YourDomain findBysomeparameter(Long parameter);
}
而且您不需要添加这些注释:
@EnableJpaRepositories
@EntityScan
@ComponentScan
除非您进行一些配置,否则 Spring-boot 会自动执行此操作。
我希望这将有所帮助。
墨色风雨
TA贡献1853条经验 获得超6个赞
几个月前,当我开始学习 Spring-Boot 时,我遇到了类似的问题。我不确定 Spring 是否认真对待目录结构。我的目录结构与@Pawan 相似。您所要做的就是将您的存储库文件夹向上移动一级,即将其移动到父abc文件夹中。使用@Service 注释您的 DeviceDao 类。最后更新@EnableJpaRepository 中的存储库路径。这对我有用。希望这有帮助。
添加回答
举报
0/150
提交
取消