springboot整合jpa,提示bean重复问题分析及解决

报错情况:

Description:

The bean 'userRepository', defined in null, could not be registered.
 A bean with that name has already been defined in null and overriding is disabled.

 

报错原因:这个Bean已经注册了,不能被覆盖

 

情况1:存在2个一样名称的bean,首先可以检查自己的类是否有写重复名称了

情况2:在新建springboot项目时,同时勾选了JPA和jdbc,导致依赖重复;因为spring-boot-starter-data-jpa内部已经有了spring-boot-starter-data-jdbc

 

解决方法:删除多余的spring-boot-starter-data-jdbc依赖即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot中,集成JPA需要通过配置类来实现。以下是一个示例: ```java @Configuration @EnableJpaRepositories(basePackages = {"com.example.demo.repository"}) //JPA仓库的扫描路径 @EnableTransactionManagement //开启事务管理 public class JpaConfig { @Autowired private DataSource dataSource; @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource); em.setPackagesToScan("com.example.demo.entity"); //JPA实体类扫描路径 JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); return em; } @Bean public PlatformTransactionManager transactionManager() { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); return transactionManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { return new PersistenceExceptionTranslationPostProcessor(); } } ``` 在配置类中,我们首先使用`@EnableJpaRepositories`注解指定JPA仓库的扫描路径,这样Spring容器就能够自动创建JpaRepository实现类的实例。 接着,使用`@EnableTransactionManagement`注解开启事务管理。 然后,我们定义了`entityManagerFactory`方法,用于创建`EntityManagerFactory`实例。在这个方法中,我们设置了数据源和JPA实体类的扫描路径,并使用`HibernateJpaVendorAdapter`作为JPA厂商适配器。 接下来,我们定义了`transactionManager`方法,用于创建`PlatformTransactionManager`实例,并将`EntityManagerFactory`实例设置为其属性。 最后,我们定义了`exceptionTranslation`方法,用于处理JPA产生的异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值