activeJDBC遇到的一些问题与解决方案

本文介绍了在使用PostgreSQL过程中遇到的字段名不匹配问题及解决方案,包括字段名大小写问题、主键命名调整以及官方文档中提供的记录创建方法存在的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Caused by: org.postgresql.util.PSQLException: ERROR: column "fileName" of relation "file_uploads" does not exist
原因: postsql字段需要小写,把字段全部大写了。
解决方案: 把字段改为小写,多个单词用_连接,例如: fileName 改为 file_name

2.Caused by: org.postgresql.util.PSQLException: ERROR: column "id" does not exist
原因:创建表的时候,使用的是file_uuid作为主键
解决方案: 把 file_uuid 改为 id

3: 参考官方文档的创建记录的写法导致不能insert记录,官方文档语句如下:
Initialize from Map
This method of creation is useful for web applications if request parameters are posted from a form an available in a Map instance:
Map values = ... initialize map
Person p = new Person();
p.fromMap(values);

p.saveIt();
但是执行到 p.saveit();时候,返回值是false,并且不能创建新的记录,
解决方案: 把p.saveit(); 改为 p.insert();

在使用 Spring Boot 和 MyBatis 时,可能会遇到如下日志信息: ``` Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@77a86d01] was not registered for synchronization because synchronization is not active JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@548fc58e] will not be managed by Spring ``` 这种日志通常表明当前的 JDBC 连接没有被 Spring 的事务管理器所管理,导致 MyBatis 创建的 `SqlSession` 无法参 Spring 的事务同步机制。这种情况通常出现在以下几种场景中: - **非事务性操作**:当执行的数据库操作没有被 `@Transactional` 注解包裹时,Spring 不会激活事务同步机制。 - **配置问题**:数据源或事务管理器的配置存在问题,导致事务无法正常注册。 - **使用了不兼容的组件**:例如使用了不支持 Spring 事务管理的数据源代理(如某些数据库连接池未正确配置)。 ### 解决方案 #### 1. 确保使用 `@Transactional` 在需要事务管理的方法或类上添加 `@Transactional` 注解,确保 Spring 能够管理事务同步。例如: ```java @Service public class UserService { @Transactional public void createUser() { // 数据库操作 } } ``` #### 2. 检查数据源配置 确保数据源配置正确,并且支持事务管理。如果使用的是 Druid 连接池,需要确保配置中启用了对 Spring 的支持。例如,在 `application.yml` 中配置如下: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_db username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 stat-view-servlet: enabled: true url-pattern: /druid/* login-username: admin login-password: admin filter: stat: enabled: true wall: enabled: true ``` #### 3. 配置事务管理器 确保 Spring Boot 正确配置了事务管理器。通常情况下,Spring Boot 会自动配置 `DataSourceTransactionManager`,但如果需要自定义,可以手动配置: ```java @Configuration @EnableTransactionManagement public class TransactionConfig { @Bean public PlatformTransactionManager transactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } } ``` #### 4. 检查 MyBatis 配置 确保 MyBatis 的配置 Spring 集成正确。如果使用了 `@MapperScan` 注解,确保扫描的包路径正确: ```java @Configuration @MapperScan("com.example.mapper") public class MyBatisConfig { } ``` #### 5. 检查依赖版本兼容性 确保 Spring Boot、MyBatis 和数据库连接池(如 Druid)的版本是兼容的。版本不兼容可能导致事务管理异常。 --- ### 总结 该问题的核心在于 Spring 的事务管理机制未被激活或配置不正确。通过确保使用 `@Transactional`、检查数据源和事务管理器的配置、以及验证依赖版本的兼容性,可以有效解决该问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值