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]<javascript:>
> >:
>
> 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<http://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<http://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] <javascript:>.
> 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.