You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data JDBC中保留字列名无法映射实体属性的问题求助

Spring Data JDBC中实体属性为SQL保留字的映射问题

我遇到的问题和JPA里处理SQL保留字的场景类似,但使用的是Spring Data JDBC。实体定义如下:

@Table("TEST_TABLE")
@Data
public class TestTableEntity {

    @Id
    private int id;

    private int order;

}

调用CrudRepository提供的方法时,报错:Incorrect syntax near the keyword 'order',生成的SQL语句为:

Executing prepared SQL statement [SELECT TEST_TABLE.id AS id,
TEST_TABLE.order AS order FROM TEST_TABLE]

为解决语法错误,我给order属性添加了@Column("\"ORDER\"")注解,此时生成的查询语句变为:

Executing prepared SQL statement [SELECT TEST_TABLE.id AS id,
TEST_TABLE."ORDER" AS "ORDER" FROM TEST_TABLE]

语法错误消失了,但列值到实体属性的映射失败,order属性始终返回0。

我还尝试重写NamingStrategy的getColumnName方法,问题仍未解决,代码如下:

@Bean
public NamingStrategy namingStrategy() {
    return new NamingStrategy() {
        @Override
        public String getColumnName(RelationalPersistentProperty property) {
            Assert.notNull(property, "Property must not be null.");
            return "\"" + ParsingUtils.reconcatenateCamelCase(property.getName(), "_") + "\"";
        }
    };
}

问题似乎出在AS "ORDER"子句上,它把双引号当成了列别名的一部分,导致无法正确映射到实体的order属性。

恳请各位提供建议或见解。

内容的提问来源于stack exchange,提问作者Newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:05:00