Blz, entendido.

Agora uma coisa me chamou a atenção. Os meus "id"s são gerados
automaticamente quando um objeto é criado e é um tipo Long do Java.
Os objetos AS3 correspondentes como como tipo do atributo "id" um Number.
mas me parece que o Long do Java nao cabe no Number no AS3 pq os valores da
esquerda para a direita depois de certo "tamanho" meio que arredonda no AS3.
Por exemplo, no Java e BD o id é 1111111111123456 no AS3 ficaria
1111111111120000 (nao exatamente esses valores, mas tipo da uma "truncada")



2009/9/12 Mário Júnior <[email protected]>

> Leonardo... lembra q eu disse q o BlazeDS usa reflection para serializar os
> objetos?
>
> Ou seja... qnd ele faz a *conversão* *de objetos Java <=> AS3*, o BlazeDS
> irá invocar os Getters/Setters dos seu objetos para recuperar/escrever os
> valores... por isso q se nao tem setter, ele nao escreve/serializa a
> informação.
>
> Se vc quer realmente "esconder" o Id, entao terá q usar os famosos (VO /
> DTO / BO, seja lá por qual nome conhecer... hehe)
>
>
> Abraços.
>
>
>
>
>
> 2009/9/12 Leonardo Ribeiro <[email protected]>
>
> Rodrigo,
>>
>> Cara, na classe DomainEntity, que so tinha o "getId()" eu coloquei o
>> "setId(Long id)" e funcionou  ;-)
>> Mas isso meio que "feriu" o meu modelo pq o "id" nao deveria poder ser
>> "setado" ele é criado pela classe e nao pode/deve mais ser alterado.
>> Mas o problema foi resolvido. Agora vou pensar em como resolver o modelo.
>>
>> Abaixo segue o codigo JAVA que carrega os "Cursos"
>>
>>     public List<Curso> getCursos(boolean loadDisciplinas) {
>>         return executeNamedQuery("Curso.load", null, null);
>>     }
>>
>>
>>
>> 2009/9/11 Leonardo Ribeiro <[email protected]>
>>
>> Blz, quando estiver em casa eu te mando sim.
>>> Uma coisa que observei agora é que na classe DomainEntity o atributo "id"
>>> é protected e so tem o "get" e NAO tem o "set".
>>>
>>> Mas te mando sim o codigo completo de carga da classe java depois.
>>>
>>> Valeu
>>>
>>> 2009/9/11 Rodrigo M. Rodrigues <[email protected]>
>>>
>>>
>>>> Complicado heim.
>>>> coloca aí pra gente o momento que vc popula a Classe DomainEntity no
>>>> Java e o Result do Serviço no Flex.
>>>> Acredito ser algum detalhe que esteja passando despercebido.
>>>>
>>>>
>>>>
>>>> On 10 set, 18:30, Leonardo Ribeiro <[email protected]> wrote:
>>>> > Rodrigo,
>>>> >
>>>> > Estou inicializando agora depois de ler seu e-mail, mas no caso agora
>>>> > carrega com valor 0 (zero) e nao o que esta na base.
>>>> > Rapaz, nao sei no que estou errando e nao to conseguindo de forma
>>>> alguma
>>>> > corrigir isso para seguir com o desenvolvimento.
>>>> >
>>>> > Segue abaixo a estrutura de classes que tenho
>>>> >
>>>> > Classes Java
>>>> >
>>>> > ps: interface IDomainEntity so implementa Serializable (nao tem codigo
>>>> > algum)
>>>> >
>>>> > @Entity
>>>> > @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
>>>> > public abstract class DomainEntity implements IDomainEntity {
>>>> >
>>>> >     private static final long serialVersionUID = 1L;
>>>> >
>>>> >     @Id
>>>> >     @Column(name = "id")
>>>> >     protected Long id;
>>>> >
>>>> >     @Transient
>>>> >     private boolean completo = true;
>>>> >
>>>> >     public DomainEntity() {
>>>> >         this.id = DomainEntityIdFactory.makeObjectId();
>>>> >     }
>>>> >
>>>> >     public Long getId() {
>>>> >         return id;
>>>> >     }
>>>> >
>>>> >     public boolean isCompleto() {
>>>> >         return completo;
>>>> >     }
>>>> >
>>>> >     public void setCompleto(boolean completo) {
>>>> >         this.completo = completo;
>>>> >     }
>>>> >
>>>> > }
>>>> >
>>>> > public class Curso extends DomainEntity {
>>>> >
>>>> >     private static final long serialVersionUID = 1L;
>>>> >
>>>> >     @Column(name = "codigo", nullable = false, unique = true)
>>>> >     private String codigo;
>>>> >
>>>> >     @Column(name = "nome", nullable = false, length = 50, unique =
>>>> true)
>>>> >     private String nome;
>>>> >
>>>> >     @Transient
>>>> >     private List<CursoDisciplina> disciplinas = new
>>>> > ArrayList<CursoDisciplina>();
>>>> >
>>>> >     public Curso() {}
>>>> >
>>>> >     public String getCodigo() {
>>>> >         return codigo;
>>>> >     }
>>>> >
>>>> >     public void setCodigo(String codigo) {
>>>> >         this.codigo = codigo;
>>>> >     }
>>>> >
>>>> >     public String getNome() {
>>>> >         return nome;
>>>> >     }
>>>> >
>>>> >     public void setNome(String nome) {
>>>> >         this.nome = nome;
>>>> >     }
>>>> >
>>>> >     public void setDisciplinas(final List<CursoDisciplina>
>>>> disciplinas) {
>>>> >         this.disciplinas = disciplinas;
>>>> >     }
>>>> >
>>>> >     public CursoDisciplina getDisciplina(final int idx) {
>>>> >         if (idx < 0 || disciplinas.isEmpty() || idx >
>>>> disciplinas.size() -
>>>> > 1) return null;
>>>> >         return disciplinas.get(idx);
>>>> >     }
>>>> >
>>>> > }
>>>> >
>>>> > Classes AS
>>>> >
>>>> >
>>>> [RemoteClass(alias="fae.engsoft.diario.model.entities.DomainEntity")]
>>>> >
>>>> >     [Bindable]
>>>> >     public class DomainEntity
>>>> >     {
>>>> >         public var id:Number = new Number;
>>>> >         public var completo:Boolean = true;
>>>> >
>>>> >         public function DomainEntity(){}
>>>> >     }
>>>> >
>>>> >     [RemoteClass(alias="fae.engsoft.diario.model.entities.Curso")]
>>>> >     [Bindable]
>>>> >     public class Curso extends DomainEntity
>>>> >     {
>>>> >         public var codigo:String = new String;
>>>> >         public var nome:String = new String;
>>>> >         public var disciplinas:ArrayCollection = new ArrayCollection;
>>>> >
>>>> >         public function Curso(){
>>>> >             super();
>>>> >         }
>>>> >     }
>>>> >
>>>> > No As que contem os metodos da tela de listagem (que tem um DataGrid)
>>>> >
>>>> > [Bindable]
>>>> > private var listCursos:ArrayCollection;
>>>> >
>>>> > public function onResultGetCursos(event:ResultEvent):void    {
>>>> >     listCursos = event.result as ArrayCollection;
>>>> >     var i:int;
>>>> >     for (i = 0; i < listCursos.length; i++) {
>>>> >         Alert.show("ID = " + (listCursos.getItemAt(i) as Curso).id);
>>>> //Aqui
>>>> > eu vejo que os "id" estao zerados (0)
>>>> >     }
>>>> >
>>>> > }
>>>> >
>>>> > Para gravacao esta tudo OK. Os id's como pode ser visto no contrutor
>>>> de
>>>> > DomainEntity é criado pela aplicacao
>>>> > é um Long, na gravacao ocorre a criacao e comita ok agora no select do
>>>> > servidor (java) carrega OK mas no cliente
>>>> > (As) chega sem esse valor. ( se eu nao inicializo, como estava antes
>>>> vem
>>>> > NaN, se inicializo como vc disse vem 0 (zero))
>>>> >
>>>> > Qualquer ajuda é muito bem vinda.
>>>> >
>>>> > 2009/9/10 Rodrigo M. Rodrigues <[email protected]>
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > > "The default value of a variable typed as Number is NaN (Not a
>>>> > > Number)."
>>>> >
>>>> > >
>>>> http://livedocs.adobe.com/flex/3/langref/index.html?Number.html&class.
>>>> ..
>>>> >
>>>> > > On 10 set, 08:29, "Rodrigo M. Rodrigues" <[email protected]>
>>>> wrote:
>>>> > > > Sempre inicie os tipos Number no AS.
>>>> > > > private var _num_conta_corrente:Number=0;
>>>> > > > ||
>>>> > > > private var _num_conta_corrente:Number=New Number();
>>>> >
>>>> > > > On 9 set, 17:28, Leonardo Ribeiro <[email protected]> wrote:
>>>> >
>>>> > > > > Os gettres e setters estao corretos e "public". (nas classes
>>>> java). Na
>>>> > > > > Classe AS nao tenho os getters e setters
>>>> >
>>>> > > > > 2009/9/9 Mário Júnior <[email protected]>
>>>> >
>>>> > > > > > o getter está certinho? Esse é outro erro comum:
>>>> >
>>>> > > > > > puglic Long getCodigo()  <-- CERTO.
>>>> >
>>>> > > > > > public Long ge*tc*odigo()  <--* Errado. *
>>>> >
>>>> > > > > > Não está "errado" sintaticamente, pq para o Java esse método
>>>> pode
>>>> > > existir
>>>> > > > > > mas não é um "getter" propriamente válido. O BlazeDS utiliza
>>>> reflexao
>>>> > > para
>>>> > > > > > acessar os atributos portanto é essencial q esteja escrito da
>>>> maneira
>>>> > > certa
>>>> > > > > > "getCodigo" com "C" maiusculo.
>>>> >
>>>> > > > > > Outra coisa é ficar atento a visibilidade do getter, tem q ser
>>>> > > public.
>>>> >
>>>> > > > > > (uma vez eu mandava o eclipse gerar meus getters/setters e nao
>>>> > > prestava
>>>> > > > > > atenção q estavam sendo gerados como protected, e perdi um
>>>> tempão
>>>> > > para
>>>> > > > > > prestar atenção nisso... bellow! hahahah)
>>>> >
>>>> > > > > > abraços.
>>>> >
>>>> > > > > > 2009/9/9 Leonardo Ribeiro <[email protected]>
>>>> >
>>>> > > > > >> Sim estao identicos, a diferenca é o tipo de dado que na
>>>> classe java
>>>> > > é
>>>> > > > > >> Long e na AS é Number
>>>> > > > > >> Classe Java
>>>> >
>>>> > > > > >> @Entity
>>>> > > > > >> @Table(name="xyz")
>>>> > > > > >> @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
>>>> > > > > >> public class Xyz implements Serializable {
>>>> >
>>>> > > > > >>    private static final long serialVersionUID = 1L;
>>>> >
>>>> > > > > >>    @Id
>>>> > > > > >>    @Column(name = "codigo", nullable = false, unique = true)
>>>> > > > > >>    private Long codigo;
>>>> >
>>>> > > > > >>    @Column(name = "nome", nullable = false, length = 50,
>>>> unique =
>>>> > > true)
>>>> > > > > >>    private String nome;
>>>> >
>>>> > > > > >> Classe AS
>>>> >
>>>> > > > > >> [RemoteClass(alias="caminho.package.entities.Xyz")]
>>>> > > > > >>    [Bindable]
>>>> > > > > >>    public class Xyz
>>>> > > > > >>    {
>>>> > > > > >>       public var codigo:Number;
>>>> > > > > >>       public var nome:String;
>>>> >
>>>> > > > > >>       public function Xyz()
>>>> >
>>>> > > > > >>    }
>>>> >
>>>> > > > > >> Qualquer ajuda é bem vinda.. nao consigo resolver isso e o
>>>> > > desenvolvimento
>>>> > > > > >> parou.
>>>> >
>>>> > > > > >> Att
>>>> >
>>>> > > > > >> 2009/9/9 Diego Martinez Salvanha <[email protected]>
>>>> >
>>>> > > > > >>> verifique se os Atributos da Classe Java estão idênticos na
>>>> Classe
>>>> > > AS!
>>>> >
>>>> > > > > >>> parece bobo.. mas é um erro comum...
>>>> >
>>>> > > > > >>> espero ter ajudado !
>>>> >
>>>> > > > > >>> 2009/9/9 Leonardo Ribeiro <[email protected]>:
>>>> > > > > >>> > Pessoal,
>>>> >
>>>> > > > > >>> > Tenho uma aplicacao simples com
>>>> Java+Hibernate+Flex+Spring.
>>>> >
>>>> > > > > >>> > Tenho uma classe simples em java com "codigo" e "nome"
>>>> sendo
>>>> > > codigo o
>>>> > > > > >>> @Id,
>>>> > > > > >>> > gravacao ocorre perfeitamente mas quando eu faço um select
>>>> eu
>>>> > > vejo que
>>>> > > > > >>> a
>>>> > > > > >>> > classe java foi carregada perfeitamente com "codigo" e
>>>> "nome"
>>>> > > porem na
>>>> > > > > >>> minha
>>>> > > > > >>> > classe correspondente em actionScrip que esta "Bindable"
>>>> com a
>>>> > > classe
>>>> > > > > >>> java
>>>> > > > > >>> > so carrega "nome" e o "codigo" fica NaN.
>>>> >
>>>> > > > > >>> > Uso o BlazeDS
>>>> >
>>>> > > > > >>> > Alguem sabe o motivo de ocorrer isso?
>>>> >
>>>> > > > > >>> > --
>>>> > > > > >>> > []'s
>>>> > > > > >>> > Leonardo
>>>> >
>>>> > > > > >>> > Linux User #488650
>>>> > > > > >>> > Ubuntu User #27045
>>>> > > > > >>> > Mais sobre o Ubuntu em português:
>>>> http://www.ubuntu-br.org/comece
>>>> >
>>>> > > > > >>> --
>>>> >
>>>> > > --------------------------------------------------------------------
>>>> > > > > >>> Diego M Salvanha
>>>> >
>>>> > > > > >>> msn : [email protected]
>>>> > > > > >>> 18 8801 4874
>>>> >
>>>> > > > > >>> P Antes de imprimir, pense no AQUECIMENTO GLOBAL.
>>>> >
>>>> > > > > >> --
>>>> > > > > >> []'s
>>>> > > > > >> Leonardo
>>>> >
>>>> > > > > >> Linux User #488650
>>>> > > > > >> Ubuntu User #27045
>>>> > > > > >> Mais sobre o Ubuntu em português:
>>>> http://www.ubuntu-br.org/comece
>>>> >
>>>> > > > > > --
>>>> > > > > > Mario Junior
>>>> > > > > > Enterprise Java / Flex Architectures
>>>> > > > > > Adobe Certified Expert Flex 3 with AIR
>>>> >
>>>> > > > > > Sofshore Informática
>>>> > > > > >http://www.sofshore.com.br
>>>> > > > > > +55 (48) 3337 2003
>>>> > > > > > Rua Pastor Willian Richard Schisler Filho 452 sl 102,
>>>> 88034-100
>>>> > > Itacorubi
>>>> > > > > > Florianopolis SC Brasil
>>>> >
>>>> > > > > --
>>>> > > > > []'s
>>>> > > > > Leonardo
>>>> >
>>>> > > > > Linux User #488650
>>>> > > > > Ubuntu User #27045
>>>> > > > > Mais sobre o Ubuntu em português:
>>>> http://www.ubuntu-br.org/comece
>>>> >
>>>> > --
>>>> > []'s
>>>> > Leonardo
>>>> >
>>>> > Linux User #488650
>>>> > Ubuntu User #27045
>>>> > Mais sobre o Ubuntu em português:http://www.ubuntu-br.org/comece
>>>>
>>>>
>>>
>>>
>>> --
>>> []'s
>>> Leonardo
>>>
>>> Linux User #488650
>>> Ubuntu User #27045
>>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>>>
>>
>>
>>
>> --
>> []'s
>> Leonardo
>>
>> Linux User #488650
>> Ubuntu User #27045
>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>>
>>
>>
>
>
> --
> Mario Junior
> Enterprise Java / Flex Architectures
> Adobe Certified Expert Flex 3 with AIR
>
> Sofshore Informática
> http://www.sofshore.com.br
> +55 (48) 3337 2003
> Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi
> Florianopolis SC Brasil
>
> >
>


-- 
[]'s
Leonardo

Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

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