Hi Wojtek,

unfortunately labels are not returned from any of the endpoints with the nodes 
automatically, so they have to be fetched separately.

Sorry for that.

You can return to the Indexed type-representation strategy with using this 
config:

    <bean id="typeRepresentationStrategyFactory" 
class="org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory">
        <constructor-arg index="0" ref="graphDatabase"/>
        <constructor-arg index="1" value="Indexed"/>
    </bean>

    <neo4j:config storeDirectory="graph.db" 
base-package="com.example.domain,com.example.domain2"/>
    <neo4j:repositories base-package="com.example.repositories"/>



Am 06.03.2014 um 18:07 schrieb Wojtek Wysocki <[email protected]>:

> Hi
> 
> I am the author of mentioned stackoverflow question (and BTW new to this 
> group)
> 
> I understand the need for labels to be fetched but how it is handled now is 
> just a show stopper for me.
> We are talking about tens of additional REST requests which increase method 
> run time significantly.
> 
> some questions
> - can labels be fetched with node data? I don't know why it is not so already 
> since labels are such crucial information for nodes. Is it something we can 
> expect to be implemented in future releases?
> - can this data be at least fetched in bulk for all nodes in returned list?
> side question
> - if this implementation is here to stay can I go back to previous 
> functionality where class name was stored in the node property without going 
> back to some previous releases?
> 
> Thanks
> Wojtek
> 
> On Thursday, March 6, 2014 4:36:15 PM UTC+1, Michael Hunger wrote:
> Yep,
> 
> my question was how would you imagine it to be configured.
> 
> Michael
> 
> Am 06.03.2014 um 16:35 schrieb Gwendal Mousset <[email protected]>:
> 
>> Thanks Michael, 
>> 
>> I understand the need to check the label directly on db. I hadn't think 
>> about inheritance.
>> Do you think this check could became optional (with configuration) to choose 
>> between fully operational inheritance and better performances ?
>> 
>> 
>> Gwendal
>> 
>> On Thursday, March 6, 2014 4:13:51 PM UTC+1, Michael Hunger wrote:
>> Imagine you have a class hierarchy like Person and Developer
>> 
>> And you have a person repo but the nodes in the db are actually developers.
>> 
>> Then you would want to get the correct instances back (Developer) but 
>> requested target type is Person
>> 
>> How would you imagine to configure it so that it doesn't look what the node 
>> is in the graph but just takes the requested type?
>> 
>> 
>> Michael
>> 
>> Am 06.03.2014 um 15:54 schrieb Gwendal Mousset <[email protected]>:
>> 
>>> Hi everyone, 
>>> 
>>> I use neo4j 2.0.1 with rest api. 
>>> To obtain better performances in my webapp, I refactor my code by using 
>>> @QueryResult objects and do more "big" requests instead of many small 
>>> requests.
>>> But the logs show me than each time I get an object from the query result, 
>>> a request is sent:
>>> 
>>> 2014-03-06 15:15:43,208 - DEBUG: SpringRestCypherQueryEngine - Executing 
>>> remote cypher query: match (n) where id(n)={nodeId} return labels(n) as 
>>> labels params {nodeId=509}
>>> 
>>> This request only get the labels of a node, and it seems there is no cache, 
>>> the request can be sent several time for a same node.
>>> On a collection, dozens of requests are sent...
>>> 
>>> I seek in SDN code what are the reason, and i found 
>>> Neo4jEntityConverterImpl :
>>> 
>>> public <R extends T> R read(Class<R> requestedType, S source, MappingPolicy 
>>> mappingPolicy, final Neo4jTemplate template) {
>>>         // 1) source -> type alias
>>>         // 2) type alias -> type
>>>         // 3) check for subtype matching / enforcement
>>>         final TypeInformation<R> requestedTypeInformation = requestedType 
>>> == null ? null : ClassTypeInformation.from(requestedType);
>>>         final TypeInformation<? extends R> targetType = 
>>> typeMapper.readType(source, requestedTypeInformation); <-- causes get 
>>> labels request
>>> 
>>> ...... //
>>> }
>>> 
>>> If I correctly understand, this code determines which classes must be 
>>> instantiate. But what i don't understand is that requestedTypeInformation 
>>> and targetType have the same value.
>>> So would it be possible to bypass the db check and only take the 
>>> requestedTypeInformation value ?
>>> 
>>> I found a quite similar question on stakoverflow: 
>>> http://stackoverflow.com/questions/22209220/unnecessary-additional-label-requests-for-nodes
>>> 
>>> Thanks
>>> 
>>> -- 
>>> 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.

-- 
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