java - Hibernate 如何映射列?
问题描述
我正在通过 Spring 制作一个 REST api 来从数据库中检索数据。但是我想了解 Hibernate 究竟如何将列映射到 POJO?
数据库中的列名类似于“FIRST_NAME”、“LAST_NAME”。在 POJO 中,我将属性名称设为“firstName”和“lastName”。但是,Hibernate 仍然可以正确映射。这是怎么发生的?
解决方案
通常,我们会使用@Column
显式定义映射到 a 属性的列名。如果没有@Column
使用,它将使用配置的命名策略来确定属性应该映射到哪一列。
我猜您正在使用自定义PhysicalNamingStrategy
的将 lowerCamelCase 属性映射到 HIGHER_UNDERSCORE 列。
您可以参考文档以获取有关命名策略行为的更多信息。
正如您在评论中提到您正在使用弹簧,我相信您也在使用弹簧引导,默认情况下将物理命名策略配置为SpringPhysicalNamingStrategy
(文档):
默认情况下,Spring Boot 使用 SpringPhysicalNamingStrategy 配置物理命名策略。此实现提供与 Hibernate 4 相同的表结构:所有点都被下划线替换,驼峰式大小写也被下划线替换。默认情况下,所有表名都以小写形式生成,但如果您的架构需要,可以覆盖该标志。
例如,TelephoneNumber 实体映射到 phone_number 表。
推荐阅读
- javascript - 如何通过使用时刻减去两个日期来获得总小时数?
- ios - Xcode 10 生成的 Assets.car 比 Xcode 9 大?
- scala - 期货如何在 Akka 演员中执行
- c# - 从字符串到布尔值的 IValueConverter 转换错误
- vb.net - 在 vb.net 的水晶报表中显示查询参数
- javascript - url 响应无法在 React App 中映射
- android - 如何使用 JSON 解析获取微调器的选定项 id
- drools - 提高 Drools Fusion 启动性能
- git - git 是否适合存储数千个小型二进制文件,如 PDF 和文档?
- android - RecyclerView:没有附加适配器;使用改造跳过应用程序中的布局