开始之前,我已经搜索了以下主题作为答案:
我正在尝试使用以下代码直接使用JdbcTemplate直接查询数据库(无Hibernate):
private String read(final int id) {
final String query = String.format("select some_column from my_table where id='%d' limit 1;", id);
return jdbcTemplate.query(query, rs -> {
if (rs.next()) {
return rs.getString(1);
}
return "";
});
}
如果这有任何改变,我将从Guava
的缓存中调用此代码,如下所示:
cache.get(id, () -> read(id));
我查询了数据库,发现可以与服务用户一起读取结果,并且当然该表存在。
SELECT table_schema, table_name
FROM information_schema.tables
WHERE lower(table_name) = 'my_table'
结果是:
table_schema|table_name |
------------|----------------|
public | my_table |
我想念什么?
这是不正确的,您不能将表名称放在连接字符串中。我不了解postgre,“ public”的含义是您的架构名称,或者仅表示它是全局名称。但是您的连接字符串不正确。您不能在其中包含表名称。您应该尝试:
jdbc:postgresql://localhost:5432/schema-name
schema-name可能为空,或者“ public”可能是您的架构名称。有点不确定。