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