我已经创建了使用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 answer和this answer