Uploaded image for project: 'Spring Data Neo4j'
  1. Spring Data Neo4j
  2. DATAGRAPH-338

Distinct in Neo4j 1.9.M05 cypher query causes exception

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Won't Fix
    • Affects Version/s: 2.2
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      Neo4j 1.9.M05
      SDN 2.2

      Description

      Maybe I'm to quick and SDN will only support 1.9 when its officially released, but I already gave the Neo4j 1.9.M05 a try. Everything seems to be compatible, except one thing.

      The following cypher query runs fine:

      START entity=node:attach_content("content:*test*") 
      MATCH (entity)<-[:ATTACHES]-(c) 
      WHERE entity.visibility? ="VISIBLE" 
      RETURN c 
      ORDER BY id(c) DESCENDING
      

      while this one, with DISTINCT, causes an exception:

      START entity=node:attach_content("content:*test*") 
      MATCH (entity)<-[:ATTACHES]-(c) 
      WHERE entity.visibility? ="VISIBLE" 
      RETURN DISTINCT c 
      ORDER BY id(c) DESCENDING
      

      When there is no result, everything runs fine, but when there's one or multiple results, it fails:

      java.lang.RuntimeException: Cannot extract single value from Iterable with more 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:99)
      	at org.springframework.data.neo4j.conversion.QueryResultBuilder$1.convert(QueryResultBuilder.java:102)
      	at org.springframework.data.neo4j.conversion.QueryResultBuilder$1.access$300(QueryResultBuilder.java:81)
      	at org.springframework.data.neo4j.conversion.QueryResultBuilder$1$1.underlyingObjectToObject(QueryResultBuilder.java:120)
      	at org.neo4j.helpers.collection.IteratorWrapper.next(IteratorWrapper.java:47)
      	at org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:353)
      	at org.neo4j.helpers.collection.IteratorUtil.addToCollection(IteratorUtil.java:370)
      	at org.springframework.data.neo4j.conversion.ContainerConverter.toContainer(ContainerConverter.java:34)
      	at org.springframework.data.neo4j.conversion.QueryResultBuilder$1.as(QueryResultBuilder.java:127)
      	at org.springframework.data.neo4j.repository.AbstractGraphRepository.query(AbstractGraphRepository.java:442)
      	at org.springframework.data.neo4j.repository.AbstractGraphRepository.query(AbstractGraphRepository.java:453)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:333)
      	at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:318)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      	at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      

      I'm using a CypherDSLRepository to query a paged result.

        Attachments

          Activity

            People

            • Assignee:
              mhunger Michael Hunger
              Reporter:
              tims83 Timmy Storms
              Last updater:
              Nicolas Mervaillie
            • Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: