【问题标题】:CYPHER QUERY :-Change Arrayreturned by collect(n.name) in cypher query to Arraylist (util)CYPHER QUERY:-将密码查询中collect(n.name)返回的Array更改为Arraylist(util)
【发布时间】:2017-04-12 07:25:32
【问题描述】:

Neo4j 密码查询 collect() 在结果中返回数组。为了迭代它,我们需要将它添加到 arrayList 中。我们之前使用的流程对我们没有帮助并抛出异常。

以前的代码:-

public  String GettingCurrentDate() {

    Connection connect = null;
    String query=null;
    try {
        connect = graphdbConnect();
        Statement stmt = connect.createStatement();

                query="match(n:learner) "
                        + " return collect(n.name) as ids";
                System.out.println(query);

                ResultSet rs = stmt.executeQuery(query.toLowerCase());

                while(rs.next()){

                    Array idsList=rs.getArray("ids");

                        System.out.println("idsList :: "+idsList);

                        ArrayList<String> userIds = new ArrayList<>();

                        String[] userIdsArray = (String[])rs.getArray("ids").getArray();

                        for(String id : userIdsArray) {
                            userIds.add(id);
                            System.out.println(userIds+"------userId");
                        }
                }
    }
    catch(Exception e) {
        e.printStackTrace();
    } finally {
        if(connect!=null) {
            try {
                connect.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    return "sucess";
}

此代码出现异常java.sql.SQLFeatureNotSupportedException: get array

问题:- 我们如何从 COLLECT() 函数中获取数据并对其进行迭代

【问题讨论】:

    标签: java neo4j cypher


    【解决方案1】:

    您是否检查过

    返回的实际对象
    resultSet.getObject("ids")
    

    如果它类似于用户定义的过程,Cypher 中的集合会以 ArrayLists 的形式返回,因此请尝试将返回的对象转换为 ArrayList,看看这是否适合您。

    【讨论】:

      【解决方案2】:

      将对象转换为 ArrayList

                          Object idsList=rs.getObject("ids");
                          System.out.println("idsList :: "+idsList);
                          ArrayList<String> userIds = (ArrayList<String>) idsList;
                          System.out.println("List2 Value: "+userIds);
      

      【讨论】:

      • 请注意,这里不需要调用ArrayList的构造函数。
      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多