我正在将现有服务升级到 Spring Boot 3。这包括升级到
spring-boot-starter-data-jpa 3.15
,这意味着升级到 Hibernate 6 和 Tomcat 10.1。当我在本地运行一个预定查询时,我收到错误 Invalid object name 'XXX.TableName'
。原始服务在本地运行良好,因此我认为这不是权限问题。我们已将 spring.jpa.hibernate.naming.physical-strategy
设置为本地类,该类在原始服务和更新后的服务上都会返回 XXX.TableName
。 XXX.TableName
也是我用 DBeaver 生成 SQL 时得到的,所以这是正确的名称。有人可以建议我应该在哪里寻找问题吗?我还更新了 Spring Security,我认为这不会导致此问题,但我可能是错的。
根据这篇文章Hibernate 6中的序列命名策略和迁移指南:
以前的 Hibernate 版本提供了 1 个默认行为,并且您有 如果您想使用不同的序列名称,请指定序列名称。 使用 Hibernate 6,您可以在 4 种隐式命名策略之间进行选择 对于数据库序列:
您必须将下一个参数设置为
application
属性文件
spring.jpa.properties.hibernate.id.db_structure_naming_strategy=legacy
有关此更改的更多详细信息,您可以在上面提供的参考资料中找到。