Spring Data JDBC 使用 Boot 2.3.0 生成错误的 HSQLDB 查询

2023-12-01

我有一个使用 Spring Data JDBC 的 Spring Boot 项目。测试使用 HSQLDB。当我尝试升级到 Spring Boot 2.3.0 时,我的存储库测试开始失败。

Spring Data JDBC 现在似乎引用表名和列名。 Spring Boot 2.2.7 附带的 Spring Data JDBC 版本没有。

该项目位于https://github.com/mrgrew/boot230bug展示了差异。 Spring Boot 2.3.0 生成INSERT INTO "stats.counter" ("COUNTER_NAME") VALUES (?)这失败了。 Spring Boot 2.2.7 生成INSERT INTO stats.counter (counter_name) VALUES (?)成功了。

我猜测 Spring Data JDBC 没有正确识别方言。我的测试属性指定spring.datasource.platform=hsqldb我认为这可以避免歧义。

This seems就像 Spring Boot 2.3.0 中包含的 Spring Data JDBC 版本的错误一样。任何人都可以确认这是一个错误或建议对我的演示项目进行更改以使用 Boot 2.3.0 吗?

预先感谢您的任何建议或讨论!


看来我问得太快了...在我问这个问题的同一天就发布了迁移指南!https://spring.io/blog/2020/05/20/migration-to-spring-data-jdbc-2-0

迁移指南解释了我所观察到的情况:

引用标识符

Spring Data JDBC 1.x 主要使用表名和列名而不更改它们。当您使用 SQL 关键字作为属性或实体名称或尝试在列名称中使用某些特殊字符时,这会导致问题。

因此,Spring Data JDBC 2.0 默认引用所有标识符。这使得名称区分大小写,至少对于大多数数据库来说是这样。由于默认情况下我们还将生成的名称转换为数据库使用的默认字母大小写,因此假设您像大多数人一样在 CREATE TABLE 语句中没有使用引号,这不会导致任何问题。

从 Liquibase 更改日志中删除 @Table 注释和 schemaName 消除了我无意中使用的引用并解决了问题。作为奖励,我不再需要创建架构,因此我可以删除spring.datasource.platform=hsqldb和 schema-hsqldb.sql 文件。请参阅fixed工作版本的分支。

谢谢你的轻推延斯·肖德!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data JDBC 使用 Boot 2.3.0 生成错误的 HSQLDB 查询 的相关文章

随机推荐

  • Bootstrap 4.0 网格系统布局不起作用

    我正在尝试使用引导程序进行布局 但我无法弄清楚我做错了什么 我放入两列 6 列 第二列 6 列 我放入两列 3 列 但它不起作用 我是引导新手 这是代码
  • DataGridView:更改数据源后保留选择吗?

    有没有办法在更改数据源后保持 DataGridView 的选定单元格处于选中状态 您可以根据特定于您的需求的条件来匹配应选择的内容 只需根据您的匹配将单元格或行的 Select 属性设置为 true false 即可 这是一个简单的示例 您
  • DNS 记录将 www 重定向到非 www

    我在用着名称廉价域和Vultr主持 我正在尝试将 DNS www 重定向到非 www www example com 到 example com 我联系了 Vultr 并询问如何使用他们的 DNS 管理器执行此操作 他们说他们不会提供帮助
  • 在python中将列表列表转换为数据框

    list 1 1 56 20 2 78 30 3 34 40 4 98 这是我的列表列表 我想制作一个像这样的数据框 a b c 1 1 56 20 2 78 30 3 34 40 4 98 我做了一个代码 df pd DataFrame
  • 使用 Crashlytics 将应用程序部署到 Apple Appstore - 我需要隐私政策吗?

    我即将向 Apple AppStore 提交一个使用 Swift 构建的应用程序 该应用程序使用 Crashlytics 来捕获崩溃信息 正如 Crashlytics 用户所知 有关使用情况 持续时间 崩溃等的一些信息会被捕获并存储在 Cr
  • Flex 忽略 services-config.xml 中的更改

    昨天我花了半天时间尝试强制 Flex Remoting 使用 HTTPS 但没有成功 今天我尝试连接到其他域 我更改了端点的 url 但看起来 Flex 只是忽略了我的更改 我确信 src 目录中的任何文件中都不存在旧网址 我什至将 ser
  • 如何使用Python请求登录网站,存储cookie,然后访问网站上的另一个页面?

    我正在尝试使用 Python 脚本登录网站 存储我收到的 cookie 然后使用相同的 cookie 访问网站的会员专用部分 我已经阅读了有关该主题的几篇文章和答案 但没有一个答案对我有用 以下是我尝试访问的网站登录页面的 HTML 代码
  • 子/函数数组参数已更改

    我有一个带有字符串数组作为参数的 Sub Private Sub des ByVal array As String Dim i As Integer For i 0 To UBound array array i hy Next End
  • manim 中的孟加拉语单词打印完全错误

    我一直在尝试使用 Manim 为孟加拉语角色制作动画 我用了这个方法在 Manim 中使用电脑字体 一切似乎都运行良好 直到我看到输出 例如 如果我写 我得到的输出为 仔细查看输出 大多数时候它会吐出毫无意义的词语 使用的代码是 class
  • PHP PDO:SQLSTATE[HY000] [2002] 连接被拒绝

    我遇到了 PHP 数据对象的问题 我无法连接到我的数据库 首先这是我的 PHP 脚本
  • 当父级有修饰符时,SCSS + BEM 风格的子级结构

    请问可以为 rounded 内的元素设置 css 吗 我不想使用 box 某些东西 但我需要修改依赖于父修饰符的子项 div class box div class box something Hello div div div class
  • 使用AWS iOS SDK从cloudfront分发中获取文件

    我正在使用适用于 AWS 的最新 iOS SDK 并且使用 TransferManager 类从 S3 获取文件可以正常工作 S3GetObjectRequest request S3GetObjectRequest alloc initW
  • 在 Socket.IO 1.0 中配置超时和传输

    在旧版本的 Socket IO io set transports xhr polling io set close timeout 3 但现在 命令io set已被弃用 我如何定义close timeout and transports
  • Bing 地图 GetRoute 给出“0x8004231C”错误

    我试图在 bing 地图上显示从点到点的路线 在真实设备上测试 我已经输入了 2 个航路点 地理坐标 并且我正在尝试使用以下命令通过 Windows PhoneToolKit 获取路线await query GetRouteAsync 不幸
  • 强制乘法使用 __rmul__() 而不是 Numpy 数组 __mul__() 或绕过广播

    这个问题与中提出的问题很接近用你班级的 mul 覆盖其他 rmul 但我的印象是 这是一个比数值数据更普遍的问题 这也没有得到解答 我真的不想使用矩阵乘法 对于此操作 因此 问题 我确实有一个接受标量和数值数组相乘的对象 像往常一样 左乘法
  • Android 自定义日历和提醒[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我的应用程序将包含一个自定义日历 并且根据此日历用户可以创建事件和提醒 问题是 是否可以在 android 中创建自定义日历 我的意思是我想在我的日历中创建事件 这些事件不会出现
  • javascript回调函数,变量映射

    我一直在javascript中使用回调函数 但我从来不明白回调如何知道它可以接受哪些变量 让我们看下面的示例代码 var friends Mike Stacy Andy Rick friends forEach function name
  • 我是否必须修复最新 nuxt.js 的审核问题?

    我正在尝试在我的应用程序中使用 nuxt 但是当我运行 yarn 审计 时 存在一些审计问题 这些问题是 nuxt 的依赖项 我必须解决这些审计问题吗 如果必须的话 我该如何解决它 我正在使用 nuxt 2 15 7 并且添加了最新的css
  • GWT 有哪些效果库可用于商业用途?

    我正在寻找一个可以非常非常轻松地放入我现有的 GWT 应用程序的效果库 我想将库添加到我的构建路径中 然后开始编写类似的内容FX fadeOut thisWidget 取代thisWidget setVisible false GWT 是否
  • Spring Data JDBC 使用 Boot 2.3.0 生成错误的 HSQLDB 查询

    我有一个使用 Spring Data JDBC 的 Spring Boot 项目 测试使用 HSQLDB 当我尝试升级到 Spring Boot 2 3 0 时 我的存储库测试开始失败 Spring Data JDBC 现在似乎引用表名和列