Dúvida com Floggy e load NÃO lazy [RESOLVIDO]

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??

Ninguém???

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+