query-error-debugging.md 2.0 KB

查询错误调试技能

优先级

当遇到任何查询错误(SQLGrammarException、InvalidDataAccessResourceUsageException等)时,优先检查数据库文档,不要随意猜测字段名或表名。

调试步骤

1. 查找数据库文档

  • 查找项目中的.pdm文件或用户上传的数据库设计文档
  • 检查d:\Project\Java\拖轮项目AI重构目录下的数据库设计文档
  • 优先使用数据库设计文档中的字段名和表名

2. 比对实体类

  • 根据数据库文档检查实体类的@Table(name = "...")注解
  • 检查每个@Column(name = "...")注解是否与文档一致
  • 特别注意大小写、下划线命名等细节

3. 常见问题

  • 表名大小写问题:数据库文档可能使用Bus_Customer_CustomerType,但实际表名可能是bus_customer_customertype
  • 字段名大小写问题:字段名可能使用CustomerIDcustomerid
  • 字段名不匹配:文档中的字段名可能与代码中的不一致

4. 验证方法

  • 使用数据库管理工具直接查询数据库,确认表名和字段名
  • 或者查看其他已正常工作的实体类,参考它们的命名方式

示例

如果数据库文档中显示:

| 表名 | bus_customer_customertype |
|------|--------------------------|
| 字段 | customerid (varchar)     |
| 字段 | customertype (int)       |

则实体类应为:

@Entity
@Table(name = "bus_customer_customertype")
public class BusCustomerCustomerType {
    @Id
    @Column(name = "customerid")
    private String customerId;
    
    @Id
    @Column(name = "customertype")
    private Integer customerType;
}

注意事项

  • 不要假设字段名的大小写格式
  • 不要随意修改数据库结构
  • 始终以数据库文档为准
  • 如果文档不明确,先查询数据库确认实际结构
  • 并非所有表都有公共字段(如CreateUserId, CreateTime, ModifyUserId, ModifyTime等),如果数据库文档没有描述这些公共字段,就是没有,不要随意添加