Potz, é obvio. O nó de referência tem que saber quais seriados ele deve conhecer.
Eu estava inserindo assim:
[code] public Seriado criaSeriado(String titulo, String ano) {
Transaction tx = graphDbService.beginTx();
try {
Node novoSeriado = graphDbService.createNode();
Seriado seriado = new Seriado(novoSeriado);
seriado.setTitulo(titulo);
seriado.setAno(ano);
tx.success();
return seriado;
} finally {
tx.finish();
}
}
[/code]
e na hora de buscar?
[code] public List getArvoreCompleta() {
Transaction tx = graphDbService.beginTx();
List resultado = new LinkedList();
try {
//??????? FUUUUUUUU
tx.success();
return resultado;
} finally {
tx.finish();
}
}[/code]
Quando inserir devo dizer ao nó de referência o que ele deve conhecer:
[code]public Seriado criaSeriado(String titulo, String ano) {
Transaction tx = graphDbService.beginTx();
try {
//Pego o no de referência
Node referencia = this.graphDbService.getReferenceNode();
Node novoSeriado = graphDbService.createNode();
Seriado seriado = new Seriado(novoSeriado);
seriado.setTitulo(titulo);
seriado.setAno(ano);
if (referencia != null) {
//relaciono o meu seriado com o nó de referência
referencia.createRelationshipTo(novoSeriado,TipoDeRelacionamento.PAI);
}
tx.success();
return seriado;
} finally {
tx.finish();
}
}[/code]
e na hora de buscar seria assim:
[code]public List getArvoreCompleta() {
Transaction tx = graphDbService.beginTx();
List resultado = new LinkedList();
try {
//pego o no de referência pra ser usado como nó pai
Node referencia = this.graphDbService.getReferenceNode();
Traverser traverser = referencia.traverse(Order.BREADTH_FIRST,
StopEvaluator.END_OF_GRAPH,
ReturnableEvaluator.ALL_BUT_START_NODE,
TipoDeRelacionamento.PAI, Direction.OUTGOING);
for (Node node : traverser) {
resultado.add(node);
}
tx.success();
return resultado;
} finally {
tx.finish();
}
}
[/code]