KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a simple setup and encountered a puzzling (at least for me) problem: I have three pojos which are related to each other: @NodeEntity public class Unit { @GraphId Long nodeId; @Indexed int type; String description; } @NodeEntity public class User { @GraphId Long nodeId; @RelatedTo(type="user", direction = Direction.INCOMING) @Fetch private Iterable<Worker> worker; @Fetch Unit currentUnit; String name; } @NodeEntity public class Worker { @GraphId Long nodeId; @Fetch User user; @Fetch Unit unit; String description; } So you have User-Worker-Unit with a "currentunit" which marks in user that allows to jump directly to the "current unit". Each User can have multiple workers, but one worker is only assigned to one unit (one unit can have multiple workers). What I was wondering is how to control the @Fetch annotation on "User.worker". I actually want this to be laoded only when needed, because most of the time I only work with "Worker". I went through http://static.springsource.org/spring-data/data-neo4j/docs/2.0.0.RELEASE/reference/html/ and it isn't really clear to me: worker is iterable because it should be read only (incoming relation) - in the documentation this is stated clarly, but in the examples ''Set'' is used most of the time. Why? or doesn't it matter... How do I get worker to only load on access? (lazy loading) Why do I need to annotate even the simple relations (worker.unit) with @Fetch. Isn't there a better way? I have another entity with MANY such simple relations - I really want to avoid having to load the entire graph just because i want to the properties of one object. Am I missing a spring configuration so it works with lazy loading? Is
Tags (comma-separated)
Save Edits
Cancel