Boa noite a todos.
Tenho uma dúvida que não consegui encontrar ajuda pois nem mesmo sei como chamá-la, por isso coloquei no tópico LOAD NÃO LAZY…hehehhe!
É o seguinte, tenho dois objetos, um associando ao outro em um relacionamento 1x1. Eu crio estes dois objetos separadamente, carrego eles e, logo após, seto um dentro do outro…mais ou menos assim:
Objeto1 ob1 = new Objeto1();
Objeto2 ob2 = new Objeto2();
ob1.setCampo1("teste");
.
.
.
obj2.setCampo1("Lalala");
.
.
.
obj1.setObjeto2(obj2);
PersistableManager pm = PersistableManager.getInstance();
pm.save(obj1);
pm.save(obj2);
Quando dou um LOAD no objeto 1 ele trás a referência ao objeto 2 mas não trás a informação do segundo objeto.
Alguém já teve esse problema??
Estou fazendo alguma coisa de errado??
Obrigado!
Buenas rafdutra,
Não entendi direito o teu problema! Podes reformular?
Além disso, não há necessidade de você chamar o método save para o obj2, o PersistableManager se encarrega de fazer isso quando o salva obj1.
um abraço
Thiago
Bom dia tmoreira,
Você tirou uma dúvida minha que era em relação a chamar o método save ou não para o objeto contido em outro objeto.
Bom, o que acontece é quando eu aponto o objeto 2 para o objeto 1 e dpois salvo o objeto 1 salva normalmente, porém quando eu pego o objeto 1 através do PersistableManager eu não conseguia pegar a referência ao objeto 2, ou seja, todos os seus atributos vinham nulos.
Agora eu descobri que o problema não é em relação a como eu utilizo o Floggy, o meu problema é que eu coloco esse objeto 1 em um Vector, dai em outro momento eu pego essa referência e dou um get no objeto 2, ai sim acontece esse problema.
Vou pesquisar mais afundo sobre isso!!
Muito obrigado!
Bom dia Thiago.
Me enganei no último post. O que acontece não tem a ver com o Vector, mas sim com o Floggy!!
Aqui estão alguns trechos de código:
Classe OrdemProducaoProuto:
public class OrdemProducaoProduto implements Persistable {
//atributos
...
private OrdemProducaoPega ordemProducaoPega;
public OrdemProducaoProduto() {
}
public OrdemProducaoPega getOrdemProducaoPega() {
return ordemProducaoPega;
}
public void setOrdemProducaoPega(OrdemProducaoPega ordemProducaoPega) {
this.ordemProducaoPega = ordemProducaoPega;
}
//getters and setters
}
Classe OrdemProducaoPega:
public class OrdemProducaoPega implements Persistable {
//atributos
...
public OrdemProducaoPega() {
}
//getters and setters
}
Trecho de código em que acontece a persistência:
ordemProducaoPega = new OrdemProducaoPega();
//seta atributos ordemProducaoPega
ordemProducaoProduto.setOrdemProducaoPega(ordemProducaoPega);
PersistableManager pm = PersistableManager.getInstance();
pm.save(ordemProducaoProduto);
Trecho do código que dá problema:
OrdemProducaoProduto ordemProducaoProduto;
PersistableManager pm = PersistableManager.getInstance();
ObjectSet os = pm.find(OrdemProducaoProduto.class, null, null);
int size = os.size();
Vector ordens = new Vector();
for(int i = 0. i < size; i++) {
ordemProducaoProduto = new OrdemProducaoProduto();
pm.load(ordemProducaoProduto, os.getId(i)); //esta linha aqui!!!!
ordens.addElement(ordemProducaoProduto);
}
A linha acima comentada traz o objeto ordemProducaoProduto corretamente com todos os seus atributos preenchidos, até mesmo uma referência ao objeto OrdemProducaoPega. Porem o objeto ordemProducaoPega retornado trás todos os seus atributos vazios ou nulos, mesmo eu os preenchendo anteriormente.
Estou fazendo alguma coisa de errado??
Boa tarde Rafael,
Aparentemente o teu código está correto mas não entendo o por quê dos atributos estarem null.
Abaixo está o testcase que valida a funcionalidade lazy, talvez possa lhe ajudar em algo
http://floggy.sourceforge.net/modules/floggy-persistence-test/1.3.0/floggy-persistence-test/xref-test/net/sourceforge/floggy/persistence/fr2227200/FR2227200Test.html
um abraço!
Olá Thiago.
Estou tendo problemas para usar essas classes que você disponibilizou!!
Como posso usá-las?
Tenho que baixar algum outro jar com essas classes de testes?
Desculpe a dúvida de iniciante, mas não estou habituado com ferramentas de testes!
Obrigado!
Olá Rafael,
Nào há necessidade de usar nenhum jar extra. O link que te enviei é apenas um exemplo de como usar a API do Floggy.
um abraço
Boa tarde Thiago.
Achei que essas seriam classes já pra testes!!
Verifiquei o meu tratamento para retornar os objetos e comparei com os que você passou. Realmente estão executando normalmente.
Descobri o que estava acontecendo…no momento em que eu populava o banco, o loop se perdia e inseria alguns valores nulos.
Mesmo assim aprendi algumas coisas a mais que ainda não conhecia sobre o Floggy!!
Valeu!
T+