Java Hive 2 JDBC PreparedStatement抛出错误,无法识别表达式规范中“?”“”附近的输入

Java Hive 2 JDBC PreparedStatement抛出错误,无法识别表达式规范中“?”“”附近的输入,java,jdbc,hive,prepared-statement,Java,Jdbc,Hive,Prepared Statement,RAL是一个简单的配置单元表,具有字符串类型的列spd\U field\U label\U id和SUBJECT\U USER\U id 使用Hive2的简单PreparedStatement抛出下面的错误堆栈跟踪。有没有关于什么地方可能出错的建议?如果使用语句而不是PreparedStatement,并且不使用?用于参数绑定 try { Class.forName("org.apache.hive.jdbc.HiveDriver"); } catch (ClassNot

RAL是一个简单的配置单元表,具有字符串类型的列spd\U field\U label\U id和SUBJECT\U USER\U id

使用Hive2的简单PreparedStatement抛出下面的错误堆栈跟踪。有没有关于什么地方可能出错的建议?如果使用语句而不是PreparedStatement,并且不使用?用于参数绑定

try {
        Class.forName("org.apache.hive.jdbc.HiveDriver");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.exit(1);
    }
    String query = "SELECT spd_field_label_id FROM RAL WHERE SUBJECT_USER_ID = ?";

    PreparedStatement stmt = null;
    Connection con = null;
    boolean testCasePassed = false;

    try {

        con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "", "");
        stmt = con.prepareStatement(query);

        stmt.setString(1, "USR-44");
        ResultSet resultSet = stmt.executeQuery(query);

        Assert.assertNotNull(resultSet);

        while (resultSet.next()) {
            testCasePassed = true;
            System.out.println("=======Test =========" + resultSet.getString("spd_field_label_id"));
        }
    } finally {

        if (stmt != null) {
            stmt.close();
        }

        if (con != null) {
            con.close();
        }

    }

    return testCasePassed;
你用错了方法。你已经准备好了陈述。它已准备好执行。应该是:

stmt.executeQuery(query);

发布真实代码。至少是真实的查询。Hi EJP该查询是真实的。它只是尝试根据字符串列的where子句获取字符串列,我已经粘贴了我尝试在Junit测试用例中运行的实际代码。在配置单元命令行上或通过语句执行时,查询可以正常工作?不,查询不是真实的。它显然是编造出来的,名字像是某物的名字。这就是为什么我要你改变它。否则你为什么要改变它?不要在这里胡说八道。请注意你的语言EJP,我不是来和你打架的!columnName是someColumnName或spd\u field\u label\u id或table name是RAL有什么关系?当我已经提到它是一个字符串列,并且我正在查询另一个字符串列时,它是否有任何区别,尤其是当它是我的特定表结构时;返回的是布尔值,但我需要该查询的结果集,如何才能执行?只需运行stmt.executeQuery?
stmt.executeQuery(query);
stmt.execute();