首页 > 解决方案 > Hibernate 如何映射列?

问题描述

我正在通过 Spring 制作一个 REST api 来从数据库中检索数据。但是我想了解 Hibernate 究竟如何将列映射到 POJO?

数据库中的列名类似于“FIRST_NAME”、“LAST_NAME”。在 POJO 中,我将属性名称设为“firstName”和“lastName”。但是,Hibernate 仍然可以正确映射。这是怎么发生的?

标签: javahibernatejpapojo

解决方案


通常,我们会使用@Column显式定义映射到 a 属性的列名。如果没有@Column使用,它将使用配置的命名策略来确定属性应该映射到哪一列。

我猜您正在使用自定义PhysicalNamingStrategy的将 lowerCamelCase 属性映射到 HIGHER_UNDERSCORE 列。

您可以参考文档以获取有关命名策略行为的更多信息。


正如您在评论中提到您正在使用弹簧,我相信您也在使用弹簧引导,默认情况下将物理命名策略配置为SpringPhysicalNamingStrategy文档):

默认情况下,Spring Boot 使用 SpringPhysicalNamingStrategy 配置物理命名策略。此实现提供与 Hibernate 4 相同的表结构:所有点都被下划线替换,驼峰式大小写也被下划线替换。默认情况下,所有表名都以小写形式生成,但如果您的架构需要,可以覆盖该标志。

例如,TelephoneNumber 实体映射到 phone_number 表。


推荐阅读