2017-04-12 70 views
0

Neo4j cypher查询collect()返回Array中的结果。为了迭代它,我们需要它添加到arrayList中。之前我们使用的过程并不能帮助我们并抛出异常。CYPHER QUERY: - 更改Array(Array)返回Arraylist(util)的收集(n.name)

以前的代码: -

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:获得阵列

问题: - 我们将如何得到数据收集来自()函数并重复它

回答

1

您是否检查过

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

如果它像用户定义的过程一样,Cypher中的集合将作为ArrayLists返回,因此请尝试将返回的对象转换为ArrayList并查看它是否适用于您。

0

演员对象ArrayList的

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

只是要注意,有没有必要在这里调用ArrayList的构造。 – InverseFalcon