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
