У меня есть следующие объекты домена (Project, User, Task). Как я могу получить объект с определенными связанными объектами через Spring Data Neo4j 4 (SDN4)? Например, я хочу получить проект со связанными задачами, но без пользователей. Этот образец не работает. Определение depth
в методе neo4jTemplate.load
мне не подходит, потому что он получает пользовательские объекты.
public Project findProjectWithTasks(Long projectId){
Project project = neo4jTemplate.load(Project.class, projectId, 0);
/*
project.id <- correct
project.name <- correct
project.tasks <- null, but in previous versions of Spring Data Neo4j I had empty entities with id
*/
Collection<Task> tasks = neo4jTemplate.loadAll(project.getTasks()); // <- returns null, because project.getTasks() is null
return project;
}
//----------
@NodeEntity
class Project {
@GraphId
private Long id;
private String name;
@Relationship(direction = Relationship.OUTGOING, type = "PROJECT_TASK")
private Set<Task> tasks;
@Relationship(direction = Relationship.OUTGOING, type = "PROJECT_USER")
private Set<User> users;
}
@NodeEntity
class Task {
@GraphId
private Long id;
private String name;
@Relationship(direction = Relationship.INCOMING, type = "PROJECT_TASK")
private Project project;
@Relationship(direction = Relationship.OUTGOING, type = "TASK_USER_ASSIGNED")
private User assignedTo;
}
@NodeEntity
class User {
@GraphId
private Long id;
private String email;
@Relationship(direction = Relationship.INCOMING, type = "TASK_USER_ASSIGNED")
private Set<Task> tasks;
@Relationship(direction = Relationship.INCOMING, type = "PROJECT_USER")
private Set<Project> projects;
}