Thanks a lot for both. Michael
Am 06.03.2014 um 10:26 schrieb Grégoire Colbert <[email protected]>: > Hi Michael, > > I created an issue at : https://jira.springsource.org/browse/DATAGRAPH-438 > > Grégoire > > Le jeudi 6 mars 2014 08:00:19 UTC+1, Michael Hunger a écrit : > Great question. > > You're not expected to override exists. > > It should actually just work. I would appreciate a JIRA issue with the > content of this email. Not sure I understand it all, so a test-project with a > failing unit-test would be awesome. > > Thanks a lot > > Michael > > I think most sense would make (this doesn't work yet I think), to coerce the > numeric result to a boolean > >> @Override >> @Query(value = "match (n:Community) where id(n)={id} return count(n)") >> public boolean exists(@Param("id") Long id); > > > Am 05.03.2014 um 17:58 schrieb Grégoire Colbert <[email protected]>: > >> Hi, >> >> I'm trying to override the "boolean exists(Long)" function in my >> CrudRepositories interfaces, and I think I have found an inconsistency in >> Cypher about the "return" clause. >> >> The method I want to add to "CommunityRepository" is : >> >> @Override >> @Query(value = "match (n:Community) where id(n)={id} return count(n) > >> 0") >> public boolean exists(@Param("id") Long id); >> >> What happens is this : >> - if the node whose "id" is given carries the label ":Community", then this >> request will return a boolean "true", which is the expected behaviour. >> - if the node doesn't carry the ":Community" label (for example it carries >> ":Institution"), then the request will return "0 row" which is not a boolean >> value. >> >> So the bug is that "return count(n) > 0" is ignored when there is no node >> returned. >> >> Some help would be really appreciated as I don't know how to solve my >> original issue involving the "exists" function. >> >> Thanks, >> Grégoire >> >> Le mercredi 5 mars 2014 16:27:48 UTC+1, Grégoire Colbert a écrit : >> Hi, >> >> I have an abstract class "OrganisationNode" containing a "@GraphId id" field. >> >> I have several concrete classes extending OrganisationNode, for example >> "InstitutionNode" or "CommunityNode". None of them have a @GraphId field. If >> I put another "@GraphId id" field on InstitutionNode, I get the following >> error "Attempt to add id property private java.lang.Long >> eu.ueb.acem.domain.beans.rouge.neo4j.OrganisationNode.id but already have >> property private java.lang.Long >> eu.ueb.acem.domain.beans.rouge.neo4j.InstitutionNode.id registered as id. >> Check your mapping configuration!" >> >> However, this seems ok at first, because each of my DAOs (e.g. >> InstitutionDAO, CommunityDAO, etc) contain a CrudRepository instance >> specific to a given concrete class. It can create nodes and they have the >> good labels, e.g. if I call InstitutionRepository.create("my new >> institution"), the resulting node will have the labels : "Organisation", >> "Institution" and "_Institution". That's exactly what I want. >> >> The problem is that CrudRepository#exists returns true, even if I mix the >> concrete classes. For example, if I call InstitutionRepository#exists(id of >> a CommunityNode), it returns true! The same thing happens with >> CommunityRepository#exists(id of an InstitutionNode). >> >> It seems that the @GraphId concerns the OrganisationNode and that the >> "exists" method doesn't care about the type associated with the >> CrudRepository. I would find logical the following results : >> - InstitutionRepository#exists(id of a InstitutionNode) to return true >> - InstitutionRepository#exists(id of a CommunityNode) to return false >> >> Is that a bug? Or is that how it is supposed to work, and should I overwrite >> the "exists" method? >> >> Thanks! >> >> Grégoire >> >> -- >> 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. > > > -- > 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. -- 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.
