Hi,

I've briefly started to look at how to map Cypher query results into 
DTO's. I'm using the QueryDSL helper classes to do it, but instead of 
putting the projection methods into the query object (as QueryDSL does 
it), I have a separate Projection class for it. The reason is that I 
don't want to require DSL users to have access to the execution engine, 
which will obviously not be the case if you are creating queries on the 
client which are to be sent to the server.

Here's an example of what I want it to look like when used:
Projection projection = new Projection(engine);

Iterable<Friend> friends = projection.iterable( start( node( "john", 
john ) )
               .match( path().from( "john" ).out( "friend" )
                           .link().out( "friend" ).to( "fof" ) )
               .returns( properties( "john.name", "fof.name" ) ), 
Friend.class );
System.out.println( friends );
---
So the Projection encapsulates the reference to the query execution, 
which means that you don't need to have a reference to it when executing 
the queries to do the projection. The "iterable" method takes a DSL 
query and the Java class you want the results to be projected into. 
Pretty straightforward.

For now the code assumes that the fields in Friend is the same as the 
order of the return results. This is broken, and will be fixed later to 
use proper mapping, preferably with aliases in the return statement as 
hints.

What are the projection methods that you would like to see? What are 
common usecases?

/Rickard

-- 
Rickard Öberg
Developer
Neo Technology
Twitter: @rickardoberg, Skype: rickardoberg
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to