除非明确指定,否则如何使Spring数据JPA默认从camelCase命名为snake_case?

时间:2018-06-14 13:29:54

标签: java hibernate spring-boot spring-data-jpa naming

默认情况下,我的Spring Boot项目通过将名称从camelCase转换为snake_case(例如从 <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript"> $(function () { $("#container1").tabs(); $("#container2").tabs(); }); container1Func(); // calling container2Func directly works but not when it fires from the submit button. // container2Func(); function container1Func() { alert('function1 called'); var strVar = '<div id="tab11"><ul><li><a href="#tabs-11">Tab Header 1</a></li><li><a href="#tabs-22">Tab Header 2</a></li></ul><div id="tabs-11">Content for Tab 1 goes here.</div><div id="tabs-22"> Content for Tab 2 goes here.</div></div>'; $('#container1').append(strVar); } $('#btnchart').click(function () { container2Func(); }); function container2Func() { alert('function2 called'); var strVar = '<div id="tab111"><ul><li><a href="#tabs-111">Tab Header 11</a></li><li><a href="#tabs-221">Tab Header 21</a></li></ul><div id="tabs-111">Content for Tab 11 goes here.</div><div id="tabs-221"> Content for Tab 21 goes here.</div></div>'; $('#container2').append(strVar); } </script> 转换为fooBar),将JPA映射实体属性转换为表列。

我正在处理现有数据库,其中实体属性名称保持原样用于表列名称(例如从foo_barfooBar),因此我尝试使用{{ 1}}注释明确指定名称:

fooBar

这不起作用。我按照here给出的建议:

@Column

我的@Column(name = "fooBar") private String fooBar; 现已成功考虑在内,但我在没有spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 注释的属性上丢失了camelCase到snake_case隐式转换。

除非在@Column注释中明确指定,否则默认情况下如何从camelCase转换为snake_case?

1 个答案:

答案 0 :(得分:0)

从Hibernate 5开始,似乎不再支持使用camelCase(在Java中为命名约定)自动转换属性名称到SNAKE_CASE。但是,您可以编写自己的NamingStrategy实现,正是这样做的。 请检查this Stackoverflow-Answer,看看它是如何完成的。