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
相关产品推荐
相关产品推荐

