CYPHER QUERY:-Change Array由cypher查询中的collect(n.name)返回到Arraylist(util)

时间:2017-04-12 07:25:32

标签: java neo4j cypher

Neo4j cypher query collect()返回结果中的Array。为了迭代它,我们需要在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()函数获取数据并迭代它

2 个答案:

答案 0 :(得分:1)

您是否检查过

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

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

答案 1 :(得分:0)

将对象转换为ArrayList

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