我已经创建了使用jdbctemplate的spring-boot应用程序,一切都可以在localhost上很好地工作,但是当我将应用程序部署到Heroku并访问端点时,我会得到以下信息:

StatementCallback; bad SQL grammar [SELECT id, name, price, image, description FROM products;]; nested exception is org.postgresql.util.PSQLException: ERROR: relation "products" does not exist Position: 49


如果SQL查询不正确,那么同一应用程序在本地计算机上怎么可能呢?

这是我正在使用的jdbcTemplate的方法:

public Products getProductsList() {
    ArrayList<Product> productsList = new ArrayList<>();

    jdbcTemplate.query(
            "SELECT id, name, price, image, description FROM public.products;",
            (rs, rowNum) -> new Product(rs.getInt("id"), rs.getString("name"), rs.getFloat("price"), rs.getString("image"), rs.getString("description"))
    ).forEach(product -> productsList.add(product));

    return new Products(productsList);
}

最佳答案

我认为您应该将架构名称放在application.properties文件中,如下所示:

spring.jpa.properties.hibernate.default_schema=public


然后像这样编写查询:

SELECT id, name, price, image, description FROM products;


来源:this answerthis answer

07-24 13:51