加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – Hibernate:对MySQL使用反引号,但对HSQL不使用反引号

发布时间:2020-12-15 01:28:17 所属栏目:大数据 来源:网络整理
导读:我工作的项目(使用Java,Spring,Hibernate)最近从Oracle改为MySQL.在某些情况下,代码中的某些属性是MySQL中的保留字,例如“release”. 有一些解决方案,1)重命名代码中的属性和后续的getter / setter方法,还更新调用这些方法的代码2)使用@Column(name =“`rele

我工作的项目(使用Java,Spring,Hibernate)最近从Oracle改为MySQL.在某些情况下,代码中的某些属性是MySQL中的保留字,例如“release”.

有一些解决方案,1)重命名代码中的属性和后续的getter / setter方法,还更新调用这些方法的代码2)使用@Column(name =“`release`”)在代码中注释属性.这告诉hibernate在与数据库交谈时引用该名称.

我宁愿远离第一种方法来减少破坏更多东西的机会.第二种方法是“ok”,除了它特定于MySQL.在我们的开发中.设置我们使用HSQL,它不喜欢这些列名称的反引号.

我查看了org.hibernate.mapping.Column类,我发现它有“getQuotedName”方法,如果我可以继承Column并告诉Hibernate使用我自己的Column类,我可能会覆盖这些方法.

基于以下首选方法解决此问题的最佳方法是:a)不必重构代码库(b / c更改属性名称,getter / setter方法等)和b)希望应用程序仍然可以在HSQL中工作MySQL的.

在属性文件中具有可以切换以打开/关闭某些列命名修复的属性是合理的.这提醒我,我尝试使用自定义命名策略并覆盖“columnName”方法来围绕反引号中的列名称…这不起作用,即使在MySQL上也是如此.

最佳答案
后退滴答解决方案听起来不错.但是,如果它不起作用或者您不想使用特定JPA公司的未记录的功能:为什么不使用任何(或最常见的)数据库中未保留的列名.

您无需更改Java属性的名称,只能为它们指定列名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读