Hi Michael,

You put me on the track.

After investigation, I would not define the hashcode well. 
I had:

override def hashCode(): Int = {
    if (_id == null)
      0
    else
      _id.hashCode()
  }


Replaced by:

override def hashCode(): Int = {
    if (_id == null)
      System.identityHashCode(this)
    else
      _id.hashCode()
  }


I put *0* since I thought that there would never be a case where the 
business `_id` would be null, since i use @fetch so when I retrieve an 
attached entity, I expected to be fully complete.
That was not the case :)  I imagine that the fetch process firstly 
initializes the list only with the node id (not the business id of course), 
explaining why two elements with 0 as hashcode would be entered in 
collision, thus losing one.  AND THEN completes them with all the fetched 
attributes.

Thanks a lot,

Michael

On Friday, April 18, 2014 6:42:03 AM UTC+2, Michael Hunger wrote:
>
> Perhaps two are the same and so reduced to one in the set
>
> What happens if you add distinct to your cypher query?
>
> Sent from mobile device
>
> Am 18.04.2014 um 03:30 schrieb Michael Azerhad 
> <[email protected]<javascript:>
> >:
>
> Hi,
>
> I know that SDN 3.X.X is not full tested yet but I come across this 
> potential bug, and I would like to know if it is a "known" one:
>
> I have an acceptance test written using Specs2 (using a pretty DSL) 
> containing this:
>
> meetingRepository.findAllParticipants(meetingId) must have size 3        
> //works, 
> asserting 3, since it's a custom query I wrote in the meetingRepository to 
> prove that the second line doesn't work
>
> meetingRepository.findById(meetingId).participants must have size 3    // 
> instead of asserting 3, it always displays "containing 2, not 3"
>
> My custom query is:
>
> @Query("MATCH (m:Meeting {_id: {0}})<-[:PARTICIPATES]-(participant) 
> return participant")
> def findAllParticipants(meetingId: String): EndResult[Participant]
>
>
> The bug therefore concerns the @Fetch annotation that is above the 
> Participants Set, in the class Meeting:
>
> @org.springframework.data.neo4j.annotation.Fetch
> @org.springframework.data.neo4j.annotation.RelatedTo(`type` = 
> "PARTICIPATES", direction = Direction.INCOMING)
> var participants: java.util.Set[Participant] = new util.HashSet[
> Participant]
>
> I don't figure out why it doesn't return all the participants but only 2. 
> I even test with the Rest mode database, to be sure to see the 3 
> participants saved, just before the line "meetingRepository.findById(
> meetingId).participants must have size 3"  is executed. And there are the 
> 3 elements as expected in the rest database.
>
> Is it possible to check it with a possible SDN unit test ?  If there is 
> one concerning the fetch annotation of course.
>
> Thanks a lot,
>
> Michael
>
> -- 
> 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] <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
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/d/optout.

Reply via email to