簡體   English   中英

除非明確指定,否則如何在默認情況下將 Spring Data JPA 從 camelCase 命名為 snake_case?

[英]How to make Spring Data JPA by default naming from camelCase to snake_case unless explicitly specified?

默認情況下,我的 Spring Boot 項目通過將名稱從 camelCase 轉換為 snake_case(例如從fooBarfoo_bar ),將 JPA 實體屬性映射到表列。

我正在處理現有數據庫,其中實體屬性名稱與表列名稱保持原樣(例如從fooBarfooBar ),因此我嘗試使用@Column注釋來顯式指定名稱:

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

這行不通。 我遵循了這里給出的建議:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

我的@Column現在已成功考慮在內,但我正在將沒有@Column注釋的屬性的 camelCase 丟失為 snake_case 隱式轉換。

知道如何在默認情況下從 camelCase 轉換為 snake_case,除非在@Column注釋中明確指定?

從 Hibernate 5 開始,似乎不再支持使用 camelCase(Java 中的命名約定)將屬性名稱自動轉換為 SNAKE_CASE。但是,您可以編寫自己的 NamingStrategy 實現,這樣做。 請檢查這個 Stackoverflow-Answer以了解它是如何完成的。

當我為我的 H2 和 postgres 存儲庫注入自定義 Spring 數據源 bean 時,轉換為蛇案例的默認 JPA 行為不知何故不起作用。 我想在將對象保存到數據庫時默認將駱駝案例轉換為蛇案例而不顯式注釋列。 因此,在 application.properties 添加以下屬性對我有用:

spring.jpa.properties.hibernate.physical_naming_strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

注意:我使用的是spring boot 2.6.2版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM