You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.2.1+JPA+MySQL项目数据插入失败求助

解决Spring Boot JPA数据插入不生效问题
  • 检查事务配置:Spring Boot默认@Transactional仅对RuntimeException触发回滚,若插入方法捕获异常却未抛出,会导致事务回滚。务必在Service层方法添加@Transactional注解,且不要吞掉异常:

    @Service
    public class UserService {
        @Autowired
        private UserRepository userRepository;
    
        @Transactional
        public User saveUser(User user) {
            return userRepository.save(user);
        }
    }
    
  • 核对application.properties核心配置:除Dialect外,重点检查以下项:

    # 确认自动提交开启(默认true,避免被手动修改)
    spring.datasource.hikari.auto-commit=true
    # 确保ddl-auto配置正确(create/update均可,匹配你的需求)
    spring.jpa.hibernate.ddl-auto=update
    # 开启SQL日志,排查实际执行语句与参数
    spring.jpa.show-sql=true
    spring.jpa.properties.hibernate.format_sql=true
    # MySQL 8.0+需指定时区等参数,避免连接异常
    spring.datasource.url=jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    
  • 验证实体类主键配置:MySQL自增主键需指定正确的生成策略,否则可能导致插入后无法查询数据:

    @Entity
    @Table(name = "users")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
        // 字段getter、setter
    }
    
  • 检查Repository层方法:使用Spring Data JPA自带的save()方法时无需额外配置;若自定义JPQL插入,必须添加@Modifying和@Transactional:

    @Repository
    public interface UserRepository extends JpaRepository<User, Long> {
        @Modifying
        @Transactional
        @Query("INSERT INTO User(name) VALUES(?1)")
        void insertUser(String name);
    }
    
  • 排查事务回滚日志:通过开启的SQL日志,查看插入语句执行后是否出现ROLLBACK记录。若有,说明事务被触发回滚,需追踪代码中的异常捕获逻辑。

内容的提问来源于stack exchange,提问作者Aparna kumari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:55:59