簡體   English   中英

spring boot jdbcTemplate.query throws table not found 自動將表名轉換為大寫

[英]spring boot jdbcTemplate.query throws table not found auto converting table name to upper case

我有一個 jdbcTemplate.query 方法,它的查詢位復雜,帶有多個左連接,所以我很難實現基於接口的存儲庫方法。

我正在使用來自 AWS RDS 的 MySQL 數據庫。

當查詢正在執行 spring 啟動 jpa 時自動將表名轉換為大寫並拋出錯誤:找不到表。

例外是:

帶路徑[]拋出異常[請求處理失敗; 嵌套異常是 org.springframework.jdbc.BadSqlGrammarException: StatementCallback; 錯誤的 SQL 語法 [SELECT DISTINCT test_desc FROM test_name_table ]; 嵌套異常是 org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到表“TEST_NAME_TABLE”; SQL statement: SELECT DISTINCT test_desc FROM test_name_table [42102-200]] with root cause org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "TEST_NAME_TABLE" not found; SQL 聲明:SELECT DISTINCT test_desc FROM test_name_table [42102-200]

這是我嘗試過的解決方案:

來自 application.properties:

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,但仍然沒有運氣。

有什么推薦的解決方法嗎?

對 model 使用@Table(name = "table_name")並為 Model.Z93F725A07423D31C889FZ448F3 中的每一列使用@Column(name = "column_name")注釋是一個很好的做法

並對您在 ModelRepository.java 中使用的每個查詢使用@Query("some query in SQL")

例子:

@Entity
@Table
public class Employee implements Serializable {
    @Id

    @Column(name = "emp_id")
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "email")
    private String email;

    @Column(name = "jobTitle")
    private String jobTitle;

    @Column(name = "phone")
    private String phone;

    @Column(name = "imagUrl")
    private String imageUrl;

    @Column(name = "employeeCode")
    private String employeeCode;
}

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {

    @Query("SELECT s FROM Employee s WHERE s.email = ?1")
    Optional<Employee> findEmployeeByEmail(String email);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM