Persistencia no NeoDatis ODB

2 respostas
hap

Me deparei hoje com uma inovação pra mim.
O NeoDatis ODB (banco de daos OO).
Mas fazendo testes, sempre q persisto um objeto q contem outros objetos, ele persiste todos ele e não somente o objeto q eu mencionei.

ex:

public class Modelo{

	private String nmModelo;
        private String fabricante;

}

public class Produto {

	private int serie;
	private Modelo modelo;
	private String nmProduto;

}

no caso acima, quando faço

odb.store(produto);

ele persiste tbém o objeto modelo.
O que eu queria, é que quando já houvesse um modelo cadastrado, o mesmo não fosse cadastrado novamente.

alguém saberia me ajudar???

grato

2 Respostas

Olivier

Olá Hap,

Acredito que o problema seja o seguinte:

De maneira geral, quando você chama o método odb.store, NeoDatis ODB verifica se conhece o objeto, se conhece, ele atualiza o mesmo senão insere um novo.

No seu caso, quando você atualiza o objeto produto (que tem um modelo), o modelo foi carragedo a partir do banco ou você criou uma instância na mão?

Este modelo que deve ser associado a produto, deve ser carregado do bd e ‘setado’ no produto, segue exemplo:

// Carrega o modelo que queremos usar
Objects<Modelo> modelos = odb.getObjects(new CriteriaQuery(Modelo.class,Where.equal("fabricante","apple"));
Modelo meuModelo = modelos.getFirst();

// Cria o produto, passando um modelo que foi carregado do bd
Produto produto = new Produto("MeuProduto", meuModelo);

odb.store(produto);

Neste caso, você verá que o modelo não vai ser duplicado.

Me fale se funciona, ok?

Olivier
NeoDatis

hap

Entendi a linha de raciocínio Olivier…
vou testar e postar aqui o resultado…

obrigado

Criado 21 de fevereiro de 2009
Ultima resposta 23 de fev. de 2009
Respostas 2
Participantes 2