Hello,

I have an issue with cypher request using collect() function.
I'm using spring-data-neo4j 3.0.0-M1 and Neo4j 2.0.0-M06.

In my data model i have Category nodes.
Each category can have subcategories. 
I want to retrieve the top categories list with the associated 
subcategories.

 *Categ3* -- IS_SUBCATEGORY_OF --> *Categ1* <-- IS_SUBCATEGORY_OF -- 
*Categ2*

*My request:*

MATCH (cat:Category) 
WITH cat 
MATCH (cat)<-[?:IS_SUBCATEGORY_OF]-(subCat:Category) 
WHERE NOT cat-[:IS_SUBCATEGORY_OF]->() 
RETURN cat as category, collect(subCat) as subCategories


The query result is exactly what i expect in the console:

+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| category                                         | subCategories         
                                                                            
  |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| Node[128]{id:"e9c27555f46c4acdb29c8d0e89814467"} | []                     
                                                                            
 |
| Node[176]{id:"78f7c907068c4e1abd018fe560c2c03a"} | []                     
                                                                            
 |
| Node[134]{id:"e362b9c05a8f41f0aee877f914f2658f"} | []                     
                                                                            
 |
| Node[136]{id:"7b3d58a89ebd4010964004d58e962526"} | []                     
                                                                            
 |
| Node[118]{id:"3378af0b1f54405fb7ab2970cba5bff3"} | 
[Node[34]{id:"d10cc4418c914c1281f7183da8109a4f"},Node[46]{id:"b3012831db924c22829a0335df2e90d1"}]
 
  |
| Node[130]{id:"e3e290b4d2c648b3a6a7d0fe8da461ef"} | []                     
                                                                            
 |
| Node[138]{id:"eb828c120cb248c2a5baa92734e39b91"} | []                     
                                                                            
 |
| Node[132]{id:"057aeb6913474454a329571b9a266305"} | []                     
                                                                            
 |
| Node[126]{id:"2671039fa6f24f5b806df682c238d1c4"} | 
[Node[120]{id:"48bc7f2b34db49bfb40936864a7a4a80"},Node[122]{id:"373d94527286482fb8c807aee90d7f5e"}]
 
|
+--------------------------------------------------------------------------------------------------------------------------------------------------------+


*My QueryResult interface:*

@QueryResult
public interface CategoryWithSubCategories {


  /**
   * 
   * @return    A category.
   */
  @ResultColumn("category")
  CategoryDAO getCategory();
  
  /**
   * 
   * @return    The subcategories.
   */
  @ResultColumn("subCategories")
  Iterable<CategoryDAO> getSubCategories();
} 

*My Query: *

 @Query("MATCH (cat:Category) " 
      + "WITH cat " 
      + "MATCH (cat)<-[?:IS_SUBCATEGORY_OF]-(subCat:Category) " 
      + "WHERE NOT cat-[:IS_SUBCATEGORY_OF]->() " 
      + "RETURN distinct cat as category, collect(subCat) as subCategories") 
 Iterable<CategoryDAO> getAll();

When i call this method, i get an exception:

java.lang.RuntimeException: Cannot extract single value from Iterable withmore 
than one elements
.
 at org.springframework.data.neo4j.conversion.DefaultConverter.extractSingle
(DefaultConverter.java:60)
 at org.springframework.data.neo4j.conversion.DefaultConverter.extractValue(
DefaultConverter.java:51)
 at org.springframework.data.neo4j.conversion.DefaultConverter.convert(
DefaultConverter.java:40)
 at org.springframework.data.neo4j.support.conversion.EntityResultConverter.
convert(EntityResultConverter.java:165)
 at org.springframework.data.neo4j.conversion.DefaultConverter.convert(
DefaultConverter.java:36)
 at org.springframework.data.neo4j.rest.
SpringRestGraphDatabase$SpringResultConverter.convert(
SpringRestGraphDatabase.java:148)
 at org.neo4j.rest.graphdb.util.QueryResultBuilder$1$1.
underlyingObjectToObject(QueryResultBuilder.java:98)
 at org.neo4j.helpers.collection.IteratorWrapper.next(IteratorWrapper.java:
47)
 ...
 ...


I think my code is quite similar with the exemple in documentation at 
http://docs.spring.io/spring-data/data-neo4j/docs/3.0.0.M1/reference/htmlsingle/#reference_programming-model_mapresult

Please could you tell me what i'm doing wrong ?

Tank you


-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to