我有一个带有多个左连接的查询位复杂的jdbcTemplate.Query方法,因此我很难实现基于接口的存储库方法。
我使用的是来自AWS RDS的MySQL数据库。
当查询执行SpringBoot时,JPA自动将表名转换为大写,并抛出错误:TABLE NOT FOUND。
例外情况是:
WITH PATH[]引发异常[请求处理失败;嵌套异常是org.springframework.jdbc.BadSqlGrammarException:语句回调;错误的SQL语法[SELECT DISTINCT TEST_Desc FROM test_name_table
];嵌套异常is org.h2.jdbc.JdbcSQLSynaxErrorException:找不到表“TEST_NAME_TABLE”;SQL语句:SELECT DISTINCT TEST_Desc from test_name_table
[42102-200]]具有根本原因组织.h2.jdbc.JdbcSQLSynaxError异常:未找到表“TEST_NAME_TABLE”;SQL语句:SELECT DISTINCT TEST_Desc from test_name_table
[42102-200]
以下是我尝试过的解决方案:
来自应用程序.属性:
Spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect spring.jpa.hibernate.Naming_Strategy=org.hibernate.cfg.DefaultNamingStrategy
数据库URL:
Spring.datasource.dataSourceProperties.serverName=test-instance.us-east-1.rds.amazonaws.com;DATABASE_TO_UPPER=FALSE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;
正如您在上面的SQL查询中所看到的,我甚至将表名放在反号内。但运气不佳。
我尝试将MySQL中的表名重命名为TEST_NAME_TABLE,但仍然无济于事。
对此有什么推荐的修复方法吗?
1条答案
按热度按时间hmmo2u0o1#
对模型使用
@Table(name = "table_name")
,对模型中的每一列使用@Column(name = "column_name")
注解是一种很好的做法。并对ModelRepository.java中使用的每个查询使用
@Query("some query in SQL")
示例: