# 查询错误调试技能 ## 优先级 当遇到任何查询错误(SQLGrammarException、InvalidDataAccessResourceUsageException等)时,**优先检查数据库文档**,不要随意猜测字段名或表名。 ## 调试步骤 ### 1. 查找数据库文档 - 查找项目中的`.pdm`文件或用户上传的数据库设计文档 - 检查`d:\Project\Java\拖轮项目AI重构`目录下的数据库设计文档 - 优先使用数据库设计文档中的字段名和表名 ### 2. 比对实体类 - 根据数据库文档检查实体类的`@Table(name = "...")`注解 - 检查每个`@Column(name = "...")`注解是否与文档一致 - 特别注意大小写、下划线命名等细节 ### 3. 常见问题 - **表名大小写问题**:数据库文档可能使用`Bus_Customer_CustomerType`,但实际表名可能是`bus_customer_customertype` - **字段名大小写问题**:字段名可能使用`CustomerID`或`customerid` - **字段名不匹配**:文档中的字段名可能与代码中的不一致 ### 4. 验证方法 - 使用数据库管理工具直接查询数据库,确认表名和字段名 - 或者查看其他已正常工作的实体类,参考它们的命名方式 ## 示例 如果数据库文档中显示: ```markdown | 表名 | bus_customer_customertype | |------|--------------------------| | 字段 | customerid (varchar) | | 字段 | customertype (int) | ``` 则实体类应为: ```java @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等),如果数据库文档没有描述这些公共字段,就是没有,不要随意添加