我的 sql 查询应该从表中获取所有字段,并使用 UserMapper 模板将它们传输到 FTL 页面。该模板指示要创建哪个对象以及要与对象的哪些字段匹配哪些表列。总之:所有字段都正常工作,但 seanceNumber 字段给出错误“未找到列 'seanceNumber'”。这很奇怪,因为列是正确的,所有数据类型都是 int。桌子:( id int auto_increment, name varchar(255) null, email varchar(255) null, seance varchar(255) null, seanceNumber int not null, seat int null, constraint client_id_uindex unique (id));超光速:<#list clientsList as client><tr> <td><a href="/client/${client.id}">${client.id}</a></td> <td>${client.name}</td> <td>${client.email}</td> <td>${client.seance}</td> <td>${client.seanceNumber}</td> <td>${client.seatNumber}</td></tr>SQL: public List<Client> getAll() { String sql = "SELECT * FROM client"; return jdbcTemplate.query(sql, new UserMapper());}用户映射器: public Client mapRow(ResultSet rs, int rowNum) throws SQLException { Client client = new Client(); client.setId(rs.getInt("id")); client.setName(rs.getString("name")); client.setEmail(rs.getString("email")); client.setSeance(rs.getString("seance")); client.setSeanceNumber(rs.getInt("seanceNumber")); client.setSeatNumber(rs.getInt("seat")); return client;}结果:消息请求处理失败;嵌套异常是 org.springframework.jdbc.UncategorizedSQLException: StatementCallback; SQL [SELECT * FROM client] 的未分类 SQLException;SQL状态[S0022];错误代码[0];未找到列“seanceNumber”。;嵌套异常是 java.sql.SQLException:找不到列“seanceNumber”。也检查了错别字。我究竟做错了什么?
3 回答

ITMISS
TA贡献1871条经验 获得超8个赞
即使 SQL 是标准,也没有数据库完全实现它。为避免此类错误,最好在表和列命名中使用 sheak_case。
在你的情况下seance_number
也应该工作。

素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
我有同样的问题,但在我的情况下,当我在我的映射器中获取列时,我还有一个空间。在您的示例中,它就像 rs.getInt("seanceNumber ") 导致相同的错误。

繁华开满天机
TA贡献1816条经验 获得超4个赞
通过将表中的“seanceNumber”列重命名为“seancenumber”解决了这个问题。
“SQL 中的列名通常不区分大小写 - 所以无论您要求降神还是 SEANCE 或 SeAnCe 都没关系。但是,如果您将列名放在双引号中,它们就会区分大小写 - 我猜您的 UserMapper 确实做到了并要求一个名为“seanceNumber”的列,但数据库找不到它(因为它在数据库中称为 seancenumber 或 SEANCENUMBER)。
添加回答
举报
0/150
提交
取消