我在尝试使用后端的 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;
我暂时使用的解决方案是使用与数据库中的列名相同的属性名,但由于命名规范,不建议这样做。因此,我需要更改它才能正确使用它。
我假设您使用以下配置:
quarkus.hibernate-orm.physical-naming-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
这就是预期的行为:
命名策略仅在大写字母后面至少有一个小写字母时插入下划线。 因此在这种情况下,statusGR 与行为不匹配。