opa!!

grande Mário!

Finalmente uma luz... qual seria sua sugestão!?! rsrsrs...

Apriore o que fiz foi fazer o usar a anotacao @ManyToOne sem FetchType.LAZY,
assim ele me traz os objetos filhos...

Em 10 de maio de 2010 00:21, Mário Júnior <[email protected]> escreveu:

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

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