[RESOLVIDO] neo4j - Nó de referência

Estava olhando o exemplo do Neo4j no Github http://migre.me/42KWv do @Porcelli e vi o método getArvoreCompleta(Node pai).

Tentei buscar o nó de referência (GraphDatabaseService.getReferenceNode()) mas não consegui, o único jeito foi pegar pelo GraphDatabaseService.getNodeById(1), mas assim teria q gravar o nó inicial em algum outro lugar.

Estou fazendo um teste baseado em Seriado, Temporada e Episódio.

DÚVIDA: Queria saber como buscar a árvore completa sem ter o nó pai, carregar o primeiro nó de referência que apontaria para um/os seriado/s. Não sei se tenho que definir um nó “pai de todos” antes de inserir os seriados e etc.

E se alguém souber como buscar nós pelas propriedades já adiantaria o meu lado também!(Ex: buscar um seriado por nome).
Vi que existe o Spring-Data que ajuda a usar o neo4j também mas não cheguei a estudar ele ainda.

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]

Oi Marcelo, blz?

Isso que vc postou na ultima deve resolver. Anyway, alem do spring data, tem tbm o jo4neo http://code.google.com/p/jo4neo/. Eu particularmente, prefiro usar a API crua direto. Ela eh bem poderosa, mas um pouco excessiva em statics.

Blz velhinho. Vou dar uma olhada! Valeu!

Adriano Quando sai o livro ?