Vc esta tentando fazer isso para fugir do famoso (e difamado) problema de
lazy-load na serializacao das consultas?
Se sim, creio q nao vá funcionar, pq no momento da serializacao, o
JavaAdapter "padrao" do blaze não vai conseguir ler o objeto pq a lista
ainda "nao existe". Até existe uma referencia lá, mas repare q não sao os
objetos (registros) relacionados ao registro pai... na verdade é apenas um
para o interceptor do Hibernate poder ter referencia do objeto pai para
anexar os filhos, depois de carrega-los do banco Vc vai perceber tb q uma
série de atributos q vc não declarou estará sendo mostrado naquele objeto,
pq o Hibernate usa o .

Enfim, oq poderia tentar fazer (veja só, "tentar" significa q eu ainda nao
fiz, mas teoricamente não vai funcionar também :P) seria estender o adapter
e dar um Hibernate.initialize() na colecao que vc quer, mas isso num pontos
específico onde vc teria q varrer todos os objetos passados pela
decodificacao da classe Amf3Output.java para só dar initialize quando
realmente precisar.

Na pratica, é mais-ou-menos isso que o GraniteDS faz, mas de uma forma bem
mais estruturada (não só estendendo o adapter, mas criando outras factories
e um interceptor. Isso ficou melhor no framework que o Frank Wolf criou,
chamando de TIDE).

Concluindo, não é algo relativamente "simples".

Boa sorte, []s




Em 9 de maio de 2010 22:16, Marcelo Caser <[email protected]> escreveu:

> nao, nao... estou trabalhando com hibernate+spring+blazeds+java... estou
> mapeando as classes do java, os "TO", Externalizable.
>
> Para entender melhor o quadro segue abaixo o que estou fazendo: sao 3
> classes java que estou usando no momento.
>
> *Classes Java:*
>
> package br.org.oabgo.saeo.entidade;
>
> import static javax.persistence.GenerationType.IDENTITY;
>
> import java.io.Externalizable;
> import java.io.IOException;
> import java.io.ObjectInput;
> import java.io.ObjectOutput;
> import java.io.Serializable;
> import java.sql.Timestamp;
> import java.util.HashSet;
> import java.util.Set;
>
> import javax.persistence.CascadeType;
> import javax.persistence.Column;
> import javax.persistence.Entity;
> import javax.persistence.FetchType;
> import javax.persistence.GeneratedValue;
> import javax.persistence.Id;
> import javax.persistence.OneToMany;
> import javax.persistence.Table;
> import javax.persistence.Transient;
>
> import core.dao.TransferObject;
>
> @Entity
> @Table(name = "tbDsCertameExameOrdem")
> public class *CertameTO* extends TransferObject implements Externalizable
> {
>
>     @Id
>     @GeneratedValue(strategy = IDENTITY)
>     @Column(name = "Id", unique = true, nullable = false, precision = 18,
> scale = 0)
>     private Long id;
>
>     @Column(name = "intNumeroLivro")
>     private Integer intNumeroLivro;
>
>     @Column(name = "vchDescricao", nullable = false, length = 50)
>     private String vchDescricao;
>
>     @Column(name = "datDataProvaObjetiva", length = 23)
>     private Timestamp datDataProvaObjetiva;
>
>     @Column(name = "datDataProvaEscrita", length = 23)
>     private Timestamp datDataProvaEscrita;
>
>     @Column(name = "datDataProvaOral", length = 23)
>     private Timestamp datDataProvaOral;
>
>     @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy
> = "certameTO")
>     private Set<CandidatoTO> candidatoTOs = new HashSet<CandidatoTO>(0);
>
>     public CertameTO() {
>     }
>
>     // *** Gets and Sets ***
>
>     @Transient
>     public Serializable getKey() {
>         return getId();
>     }
>
>     public void setId(Serializable id) {
>         this.id = (Long) id;
>     }
>
>     public Long getId() {
>         return id;
>     }
>
>     public Integer getIntNumeroLivro() {
>         return intNumeroLivro;
>     }
>
>     public void setIntNumeroLivro(Integer intNumeroLivro) {
>         this.intNumeroLivro = intNumeroLivro;
>     }
>
>     public String getVchDescricao() {
>         return vchDescricao;
>     }
>
>     public void setVchDescricao(String vchDescricao) {
>         this.vchDescricao = vchDescricao;
>     }
>
>     public Timestamp getDatDataProvaObjetiva() {
>         return datDataProvaObjetiva;
>     }
>
>     public void setDatDataProvaObjetiva(Timestamp datDataProvaObjetiva) {
>         this.datDataProvaObjetiva = datDataProvaObjetiva;
>     }
>
>     public Timestamp getDatDataProvaEscrita() {
>         return datDataProvaEscrita;
>     }
>
>     public void setDatDataProvaEscrita(Timestamp datDataProvaEscrita) {
>         this.datDataProvaEscrita = datDataProvaEscrita;
>     }
>
>     public Timestamp getDatDataProvaOral() {
>         return datDataProvaOral;
>     }
>
>     public void setDatDataProvaOral(Timestamp datDataProvaOral) {
>         this.datDataProvaOral = datDataProvaOral;
>     }
>
>     public Set<CandidatoTO> getCandidatoTOs() {
>         return candidatoTOs;
>     }
>
>     public void setCandidatoTOs(Set<CandidatoTO> candidatoTOs) {
>         this.candidatoTOs = candidatoTOs;
>     }
>
>     public void setId(Long id) {
>         this.id = id;
>     }
>
>     @SuppressWarnings("unchecked")
>     @Override
>     public void readExternal(ObjectInput in) throws IOException,
>             ClassNotFoundException {
>         id = in.readLong();
>         intNumeroLivro = (Integer) in.readObject();
>         vchDescricao = (String) in.readObject();
>         datDataProvaObjetiva = (Timestamp) in.readObject();
>         datDataProvaEscrita = (Timestamp) in.readObject();
>         datDataProvaOral = (Timestamp) in.readObject();
>         candidatoTOs = (Set<CandidatoTO>) in.readObject();
>     }
>
>     @Override
>     public void writeExternal(ObjectOutput out) throws IOException {
>         out.writeObject(id);
>         out.writeObject(intNumeroLivro);
>         out.writeObject(vchDescricao);
>         out.writeObject(datDataProvaObjetiva);
>         out.writeObject(datDataProvaEscrita);
>         out.writeObject(datDataProvaOral);
>         out.writeObject(candidatoTOs);
>     }
>
> }
>
> package br.org.oabgo.saeo.entidade;
>
> import static javax.persistence.GenerationType.IDENTITY;
>
> import java.io.Externalizable;
> import java.io.IOException;
> import java.io.ObjectInput;
> import java.io.ObjectOutput;
> import java.io.Serializable;
>
> import javax.persistence.Column;
> import javax.persistence.Entity;
> import javax.persistence.FetchType;
> import javax.persistence.GeneratedValue;
> import javax.persistence.Id;
> import javax.persistence.JoinColumn;
> import javax.persistence.ManyToOne;
> import javax.persistence.Table;
> import javax.persistence.Transient;
>
> import core.dao.TransferObject;
>
> @Entity
> @Table(name = "tbCdCandidatoAnteriorExameOrdem")
> public class *CandidatoTO* extends TransferObject implements
> Externalizable {
>
>     @Id
>     @GeneratedValue(strategy = IDENTITY)
>     @Column(name = "Id", unique = true, nullable = false, precision = 18,
> scale = 0)
>     private Long id;
>
>     @ManyToOne(fetch = FetchType.LAZY)
>     @JoinColumn(name = "IdCertame")
>     private CertameTO certameTO;
>
>     @ManyToOne(fetch = FetchType.LAZY)
>     @JoinColumn(name = "IdAreaAtuacao")
>     private AreaAtuacaoTO areaAtuacao;
>
>     @Column(name = "intNumeroSequencia", nullable = false)
>     private Integer intNumeroSequencia;
>
>     @Column(name = "intPaginaLivro", nullable = false)
>     private Integer intPaginaLivro;
>
>     @Column(name = "vchNomeCandidato", nullable = false, length = 60)
>     private String vchNomeCandidato;
>
>     @Column(name = "bitSituacao", nullable = false)
>     private Boolean bitSituacao;
>
>     @Column(name = "texObservacao")
>     private String texObservacao;
>
>
>     public CandidatoTO() {
>     }
>
>     // *** Gets and Sets ***
>
>     @Transient
>     public Serializable getKey() {
>         return getId();
>     }
>
>     public void setId(Serializable id) {
>         this.id = (Long)id;
>     }
>
>     public Long getId() {
>         return id;
>     }
>
>     public void setId(Long id) {
>         this.id = id;
>     }
>
>     public CertameTO getCertameTO() {
>         return certameTO;
>     }
>
>     public void setCertameTO(CertameTO certameTO) {
>         this.certameTO = certameTO;
>     }
>
>     public AreaAtuacaoTO getAreaAtuacao() {
>         return areaAtuacao;
>     }
>
>     public void setAreaAtuacao(AreaAtuacaoTO areaAtuacao) {
>         this.areaAtuacao = areaAtuacao;
>     }
>
>     public Integer getIntNumeroSequencia() {
>         return intNumeroSequencia;
>     }
>
>     public void setIntNumeroSequencia(Integer intNumeroSequencia) {
>         this.intNumeroSequencia = intNumeroSequencia;
>     }
>
>     public Integer getIntPaginaLivro() {
>         return intPaginaLivro;
>     }
>
>     public void setIntPaginaLivro(Integer intPaginaLivro) {
>         this.intPaginaLivro = intPaginaLivro;
>     }
>
>     public String getVchNomeCandidato() {
>         return vchNomeCandidato;
>     }
>
>     public void setVchNomeCandidato(String vchNomeCandidato) {
>         this.vchNomeCandidato = vchNomeCandidato;
>     }
>
>     public Boolean getBitSituacao() {
>         return bitSituacao;
>     }
>
>     public void setBitSituacao(Boolean bitSituacao) {
>         this.bitSituacao = bitSituacao;
>     }
>
>     public String getTexObservacao() {
>         return texObservacao;
>     }
>
>     public void setTexObservacao(String textObservacao) {
>         this.texObservacao = textObservacao;
>     }
>
>     @Override
>     public void readExternal(ObjectInput in) throws IOException,
>             ClassNotFoundException {
>         id = in.readLong();
>         certameTO = (CertameTO) in.readObject();
>         areaAtuacao = (AreaAtuacaoTO) in.readObject();
>         intNumeroSequencia = (Integer) in.readObject();
>         intPaginaLivro = (Integer) in.readObject();
>         vchNomeCandidato = (String) in.readObject();
>         bitSituacao = in.readBoolean();
>         texObservacao = (String) in.readObject();
>     }
>
>     @Override
>     public void writeExternal(ObjectOutput out) throws IOException {
>         out.writeObject(id);
>         out.writeObject(certameTO);
>         out.writeObject(areaAtuacao);
>         out.writeObject(intNumeroSequencia);
>         out.writeObject(intPaginaLivro);
>         out.writeObject(vchNomeCandidato);
>         out.writeObject(bitSituacao);
>         out.writeObject(texObservacao);
>     }
>
> }
>
> package br.org.oabgo.saeo.entidade;
>
> import static javax.persistence.GenerationType.IDENTITY;
>
> import java.io.Externalizable;
> import java.io.IOException;
> import java.io.ObjectInput;
> import java.io.ObjectOutput;
> import java.io.Serializable;
>
> import javax.persistence.Column;
> import javax.persistence.Entity;
> import javax.persistence.GeneratedValue;
> import javax.persistence.Id;
> import javax.persistence.Table;
> import javax.persistence.Transient;
> import javax.persistence.UniqueConstraint;
>
> import core.dao.TransferObject;
>
> @Entity
> @Table(name = "tbDsAreasAtuacoes", uniqueConstraints =
> @UniqueConstraint(columnNames = "vchDescricao"))
> public class *AreaAtuacaoTO* extends TransferObject implements
> Externalizable {
>
>     @Id
>     @GeneratedValue(strategy = IDENTITY)
>     @Column(name = "Id", unique = true, nullable = false, precision = 18,
> scale = 0)
>     private Long id;
>
>     @Column(name = "intCodigo")
>     private Integer intCodigo;
>
>     @Column(name = "vchDescricao", unique = true, nullable = false, length
> = 50)
>     private String vchDescricao;
>
>     public AreaAtuacaoTO() {
>     }
>
>     // *** Gets and Sets ***
>
>     @Transient
>     public Serializable getKey() {
>         return getId();
>     }
>
>     public void setId(Serializable id) {
>         this.id = (Long) id;
>     }
>
>     public Long getId() {
>         return id;
>     }
>
>     public void setId(Long id) {
>         this.id = id;
>     }
>
>     public Integer getIntCodigo() {
>         return intCodigo;
>     }
>
>     public void setIntCodigo(Integer intCodigo) {
>         this.intCodigo = intCodigo;
>     }
>
>     public String getVchDescricao() {
>         return vchDescricao;
>     }
>
>     public void setVchDescricao(String vchDescricao) {
>         this.vchDescricao = vchDescricao;
>     }
>
>     @Override
>     public void readExternal(ObjectInput in) throws IOException,
>             ClassNotFoundException {
>         id = in.readLong();
>         intCodigo = (Integer) in.readObject();
>         vchDescricao = (String) in.readObject();
>     }
>
>     @Override
>     public void writeExternal(ObjectOutput out) throws IOException {
>         out.writeObject(id);
>         out.writeObject(intCodigo);
>         out.writeObject(vchDescricao);
>     }
>
> }
>
> e abaixo eu tenho minhas classes em AS3 mapeadas:
>
> package br.org.oabgo.saeo.entidade
> {
>     import flash.utils.IDataInput;
>     import flash.utils.IDataOutput;
>     import flash.utils.IExternalizable;
>
>     import mx.collections.ArrayCollection;
>
>
>     [RemoteClass(alias="br.org.oabgo.saeo.entidade.CertameTO")]
>     [Bindable]
>     public class* CertameTO* implements IExternalizable
>     {
>
>         public var id:Number;
>
>         public var intNumeroLivro:int;
>
>         public var vchDescricao:String;
>
>         public var datDataProvaObjetiva:Date;
>
>         public var datDataProvaEscrita:Date;
>
>         public var datDataProvaOral:Date;
>
>         public var candidatoTOs:ArrayCollection;
>
>         public function CertameTO()
>         {
>         }
>
>         public function readExternal(input:IDataInput):void
>         {
>             id = input.readObject() as Number;
>             intNumeroLivro = input.readObject() as int;
>             vchDescricao = input.readObject() as String;
>             datDataProvaObjetiva = input.readObject() as Date;
>             datDataProvaEscrita = input.readObject() as Date;
>             datDataProvaOral = input.readObject() as Date;
>             candidatoTOs = input.readObject() as ArrayCollection;
>         }
>
>         public function writeExternal(output:IDataOutput):void
>         {
>             output.writeObject(id);
>             output.writeObject(intNumeroLivro);
>             output.writeObject(vchDescricao);
>             output.writeObject(datDataProvaObjetiva);
>             output.writeObject(datDataProvaEscrita);
>             output.writeObject(datDataProvaOral);
>             output.writeObject(candidatoTOs);
>         }
>     }
> }
>
> package br.org.oabgo.saeo.entidade
> {
>     import flash.utils.IDataInput;
>     import flash.utils.IDataOutput;
>     import flash.utils.IExternalizable;
>
>     [RemoteClass(alias="br.org.oabgo.saeo.entidade.CandidatoTO")]
>     [Bindable]
>     public class *CandidatoTO* implements IExternalizable
>     {
>
>         public var id:Number;
>
>         public var certameTO:CertameTO;
>
>         public var areaAtuacao:AreaAtuacaoTO;
>
>         public var intNumeroSequencia:int;
>
>         public var intPaginaLivro:int;
>
>         public var vchNomeCandidato:String;
>
>         public var bitSituacao:Boolean;
>
>         public var texObservacao:String;
>
>         public function CandidatoTO()
>         {
>         }
>
>         public function readExternal(input:IDataInput):void
>         {
>             id = input.readObject() as Number;
>             certameTO = input.readObject() as CertameTO;
>             areaAtuacao = input.readObject() as AreaAtuacaoTO;
>             intNumeroSequencia = input.readObject() as int;
>             intPaginaLivro = input.readObject() as int;
>             vchNomeCandidato = input.readObject() as String
>             bitSituacao = input.readBoolean();
>             texObservacao = input.readObject() as String;
>         }
>
>         public function writeExternal(output:IDataOutput):void
>         {
>             output.writeObject(id);
>             output.writeObject(certameTO);
>             output.writeObject(areaAtuacao);
>             output.writeObject(intNumeroSequencia);
>             output.writeObject(intPaginaLivro);
>             output.writeObject(vchNomeCandidato);
>             output.writeObject(bitSituacao);
>             output.writeObject(texObservacao);
>         }
>     }
> }
>
> package br.org.oabgo.saeo.entidade
> {
>     import flash.utils.IDataInput;
>     import flash.utils.IDataOutput;
>     import flash.utils.IExternalizable;
>
>     [RemoteClass(alias="br.org.oabgo.saeo.entidade.AreaAtuacaoTO")]
>     [Bindable]
>     public class* AreaAtuacaoTO* implements IExternalizable
>     {
>
>         public var id:Number;
>
>         public var intCodigo:Number;
>
>         public var vchDescricao:String;
>
>         public function AreaAtuacaoTO()
>         {
>         }
>
>         public function readExternal(input:IDataInput):void
>         {
>             id = input.readObject() as Number;
>             intCodigo = input.readObject() as int;
>             vchDescricao = input.readObject() as String;
>         }
>
>         public function writeExternal(output:IDataOutput):void
>         {
>             output.writeObject(id);
>             output.writeObject(intCodigo);
>             output.writeObject(vchDescricao);
>         }
>
>     }
> }
>
> O erro ocorre quando eu trago todos os "Certames" cadastrados, vindos de um
> metodo List<CertamesTO>. Estou fazendo algo errado?
>
>  --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>



-- 
Mario Junior
http://blog.mariojunior.com/
@mariojunior

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a