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