Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC模板异常表或视图不存在,但实际存在_Java_Spring_Oracle_Spring Boot_Jdbctemplate - Fatal编程技术网

Java JDBC模板异常表或视图不存在,但实际存在

Java JDBC模板异常表或视图不存在,但实际存在,java,spring,oracle,spring-boot,jdbctemplate,Java,Spring,Oracle,Spring Boot,Jdbctemplate,我正在尝试使用Spring JDBCTemplate从Oracle DB获取一些数据: String query = "SELECT * FROM snow.ar_incident WHERE ROWNUM < 10"; Map<String, List<Attachment>> map = jdbcTemplate.query(query, new ResultSetExtractor<Map<String, List<Attachme

我正在尝试使用Spring JDBCTemplate从Oracle DB获取一些数据:

String query = "SELECT * FROM snow.ar_incident WHERE ROWNUM < 10";

    Map<String, List<Attachment>> map = jdbcTemplate.query(query, new ResultSetExtractor<Map<String, List<Attachment>>>() {

        @Override
        public Map<String, List<Attachment>> extractData(ResultSet rs) throws SQLException, DataAccessException {
            Map<String, List<Attachment>> map = new HashMap<>();
            //Mapping results to map
            return map;
        }
    });

它毫无问题地工作了,当我在SQLDeveloper中运行查询时也是如此。我已多次检查两种解决方案的连接详细信息,它们是相同的。为什么我不能使用JDBCTemplate访问
ar\u incident
表?

这可能是因为您对该特定表没有选择权限

grant select on snow.ar_incident to your_user;

将JDBC驱动程序更新到新版本后,所有问题都消失了

请检查是否有授权,以及是否需要使用架构作为表名的前缀。表名

即使将查询简化为
SELECT*FROM ar\u incident
,它是否会引发错误?是的,总是在我尝试使用
ar\u incident
表时。
JdbcTemplate
与您的操作相同。此外,错误来自驱动器,而不是弹簧。因此,要么表/视图真的不存在,要么您没有正确的权限,要么您没有查看您认为正在查看的数据库。我不这么认为,因为我在SQL Developer中为同一用户运行了查询,并且查询成功了。他说,如果他使用java JDBC,这是可行的,所以这不是问题你还记得哪个版本不起作用,哪个版本起作用吗?@Nate我在
OJDBC6
上遇到了这个问题,当我转到
OJDBC8
时问题就解决了。
grant select on snow.ar_incident to your_user;