JPA 持久化属性名称的问题

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

我在尝试使用后端的 JPA 将数据库列映射到 DTO 时遇到问题。 有些列名不被接受,我不知道为什么。使用quarkus后就开始出现这种情况。

当我将属性名称设置为下面的名称时,它不起作用,它返回 null:

    @Getter
    @Setter
    @Column(name="status_g_r")
    private String statusGR;

但是当我将其设置为下面的另一个时,它可以正常工作并正确返回数据:

    @Getter
    @Setter
    @Column(name="status_g_r")
    private String status_g_r;

列名与我在注释中写的相同,我不明白为什么它不起作用,因为其他一些具有相似名称的属性可以正常工作,例如:

@Getter
@Setter
@Column(name="status_gh_gj")
private String statusGhGj;

我暂时使用的解决方案是使用与数据库中的列名相同的属性名,但由于命名规范,不建议这样做。因此,我需要更改它才能正确使用它。

java jpa persistence quarkus dto
1个回答
0
投票

我假设您使用以下配置:

quarkus.hibernate-orm.physical-naming-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

这就是预期的行为:

命名策略仅在大写字母后面至少有一个小写字母时插入下划线。 因此在这种情况下,statusGR 与行为不匹配。

© www.soinside.com 2019 - 2024. All rights reserved.