Neo4j cypher query collect(( 在 result 中返回数组。为了迭代它,我们需要它添加到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(( 函数获取数据并迭代它
您是否检查过查看返回的实际对象
resultSet.getObject("ids")
如果它类似于用户定义的过程,Cypher 中的集合将作为 ArrayList 返回,因此请尝试将返回的对象强制转换为 ArrayList,看看这是否适合您。
将对象强制转换为 ArrayList
Object idsList=rs.getObject("ids");
System.out.println("idsList :: "+idsList);
ArrayList<String> userIds = (ArrayList<String>) idsList;
System.out.println("List2 Value: "+userIds);