我从事的一个项目(使用 Java、Spring、Hibernate)最近从 Oracle 更改为 MySQL。在少数情况下,代码中的某些属性是 MySQL 中的保留字,例如“release”。
有几种解决方案,1) 重命名代码和后续 getter/setter 方法中的属性,同时更新调用这些方法的代码 2) 使用 @Column(name="`release`") 注释代码中的属性。这告诉 hibernate 在与数据库通信时引用该名称。
我宁愿远离第一种方法,以减少破坏更多东西的机会。第二种方法是“可以”的,只不过它是 MySQL 特有的。在我们的开发中。我们使用 HSQL 设置,它不喜欢这些列名周围的反引号。
我查看了 org.hibernate.mapping.Column 类,发现它有“getQuotedName”方法,如果我可以子类化 Column 并告诉 Hibernate 使用我自己的 Column 类,我可能会重写这些方法。
基于以下首选方法解决此问题的最佳方法是什么:a) 不必重构代码库(b/c 更改属性名称、getter/setter 方法等)和 b) 希望应用程序仍然在 HSQL 中工作并且MySQL。
在属性文件中拥有一个可以切换以打开/关闭某些列命名修复的属性是合理的。这提醒了我,我尝试使用自定义命名策略并覆盖“columnName”方法以用反引号包围列名...这不起作用,即使在 MySQL 上也是如此。
后面的滴答声解决方案听起来不错。但是,如果它不起作用或者您不想使用特定 JPA 提供程序的未记录的功能:为什么根本不使用任何(或最常见)数据库中未保留的列名称。
您不需要更改 java 属性的名称,只需为它们指定列名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)