Spring boot应用程序不会映射camelCase数据库列

问题描述 投票:0回答:1

我正在尝试将一些数据库列(驼峰式大小写)映射到春季的模型,但由于某种原因,这不适用于驼峰式大小写的列。

这是我的模型:

@Entity
@Table(name="tournment_tournment")
public class GameData {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "Id")
    private Integer id;

    @Column(name = "partidaId")
    private String partidaId;

    @Column(name = "izena")
    private String izena;

    @Column(name = "IdEnpresa")
    private Integer idEnpresa;

    @Column(name = "jaiotzeData")
    private Date jaiotzeData;

    @Column(name = "puntuazioa")
    private Integer puntuazioa;

    @Column(name = "lanpostua")
    private String lanpostua;

    @Column(name = "jokoa")
    private Integer jokoa;

    @Column(name = "partidaData")
    private Date partidaData;

    @Column(name = "create_date")
    private LocalDateTime create_date;

    @Column(name = "write_date")
    private LocalDateTime write_date;

    @Column(name = "create_uid")
    private Integer create_uid;

    @Column(name = "write_uid")
    private Integer write_uid;


/*  Constructor getters and setter*/

我从 api 获得的 Json 响应如下所示:

  {
    "id": 7,
    "partidaId": null,
    "izena": "UnaI",
    "idEnpresa": null,
    "jaiotzeData": null,
    "puntuazioa": 120,
    "lanpostua": "dEV",
    "jokoa": 1,
    "partidaData": null,
    "create_date": "2024-01-30T11:42:58.029886",
    "write_date": "2024-01-30T11:42:58.029886",
    "create_uid": 2,
    "write_uid": 2
  },

如您所见,所有非驼峰式命名的列都存在,而驼峰式命名的列为空。我怎样才能解决这个问题?我正在使用 Odoo 17 的 postgresql 数据库。

java spring postgresql jpa odoo
1个回答
0
投票

PostgreSQL 列名称区分大小写吗? postgres 需要 " 来访问包含大写字符的列。

最简单的解决方案是将数据库列重命名为蛇形命名(SQL 默认命名约定)。

partidaId --> partida_id

默认情况下,Spring Boot 会将 Snake_case SQL 列映射到 camleCase Java 变量

您应该通过自己查询 postgreSQL 来看到此行为

alter table some_table add column "testAbcZzz" varchar;
alter table some_table add column testAbcZzz varchar;

这两者都有不同的结果。如果没有

"
posgresql 将执行所有小写

select testAbcZzz , * from some_table;
select testabczzz , * from some_table; 
© www.soinside.com 2019 - 2024. All rights reserved.