Opa... olha só... tive a idéia de pesquisar no Cache do Google, mas pelo jeito os robots do google já re-indexaram o meu blog, e daí perdi o cache do Blog antigo....
mas.... Alguem manteve o meu artigo como "histórico" (q legal) e acabei achando o link do artigo original aqui: http://webcache.googleusercontent.com/search?q=cache:l37roYngft8J:www.plugmasters.com.br/plugfeed/post/474/mapeamento-de-entidades-com-chave-composta-jpa-with-hibernate+Flex+chaves+compostas+jpa&cd=2&hl=pt-BR&ct=clnk&gl=br&client=firefox-a Espero q consigam ver. []s Em 13 de setembro de 2010 20:51, Mário Júnior <[email protected]>escreveu: > Acho q isso está relacionado as Internal Classes (classes dento de outra > classe). > Eu tinha um post sobre isso no meu antigo blog, mas q se perdeu qnd mudei > de server .. agora pensa na preguiça q dá escrever isso tudo dnovo... heheh > =P > > Primeiro pensamento que temos q ter em mente: *AS3 não permite uso de > internal class*. > Opa opa.. não joguem pedras... tá bom... dá pra simular isso mas daí a > classe 'filha' (a 'interna'no caso) tem q ficar fora do escopo do package e > acaba ficando acessível apenas para objetos internos da classe 'mae', um > clássico exemplo disso é o SingletonEnforcer muito comum em exemplos de como > implementar o pattern Singleton em AS3. Mas, convenhamos que isso não é a > mesma coisa q dá pra fazer em java. > > Sendo assim, se a @Embeddable for uma classe "interna" de outra classe, vc > terá q mapear ela de forma diferente no AS3, seguindo os passos abaixo: > > - Como em AS3 nao permite classes internas, logo em AS3 vc tem q ter DUAS > classes (arquivos .as) separados. > - Na classes "Embeddable" vc precisa mapear usando metadata > [RemoteClass(alias="classe.Mae$Filha")] > - Na classe "Mae" (a q contém o atributo "embutido") basta declarar o > atributo com tipo correto, naturalmente. > > PS: Ressalto q os termos "mae" e "filha" nesse caso nao tem nada a haver > com herança, é q não consegui pensar em outro nome para representar isso, > mas a "Mae" seria a classe "principal" e "Filha" uma classe "interna", > capicci? > > *Perceberam o $ (cifrão) ali no nome no meio do [RemoteClass]?* > Isso é pq o javac ao compilar uma classe "interna", irá gerar um arquivo > .class com o nomeDaClassePrincipal*$*NomeDaClasseFilha. Para terem certeza > disso, vcs podem conferir na pasta /bin dos seus projetos (ou em > Web-INF/classes no caso de projetos web). > > Entao, agora vem a pegadinha do malandro: como o BlazeDS sabe que um tipo > específico de classe é uma classe interna? > A resposta é simples: Qnd vc manda um objeto para o servidor, ele vai como > um RemotingMessage onde contém várias informações importantes para o > BlazeDS, e uma delas é o metadataInformation (ou coisa assim, nao lembro de > cabeça agora) mas é um atributo que contem a string "alias" declarado no > metadata [RemoteClass]. Quando o BlazeDS recebe um > "pacote.classes.Mae$Filha" ele irá conseguir (via Reflection/ClassLoader) > instanciar um objeto do tipo declarado, mesmo sendo uma classe "interna'. A > *única* obrigatoriedade requerida pelo BlazeDS é q a classe interna > precisa ser *public*. > > Enfim... no meu artigo eu falava sobre serialização de "Chaves Compostas > (PK) com JPA/Hibernate usando Flex"... seria bom ressuscitar esse artigo, já > até tinha me rendido um emprego na época :) > > > Enfim.. acho q vai ser isso.. dá um feedback pra gente @RafaelViana. > > > []s > > > > > > > > > > Em 13 de setembro de 2010 20:13, Rodrigo da Rosa Elesbão < > [email protected]> escreveu: > > E voce repetiu isso no flex? Ou seja. Criou as classes representando os >> tipos no flex para os vos? faz assim pra ficar mais facil de te ajudar. Joga >> o objeto que retorna pro flex pra gente dar uma olhada. >> >> Em 13/09/2010 19:27, "Fredy Gadotti" <[email protected]>escreveu: >> >> >> Puts, bem legal isso ai =] >> Não conhecia. >> >> Bom, não posso te ajudar, ai vai ter que perguntar para alguém que manje >> de JPA mesmo e trabalhe com Flex! >> >> >> 2010/9/13 RafaelViana <[email protected]> >> >> >> > >> > SimSim :D >> > >> > O problema é que assim: Se eu tivesse essa abordagem: >> > >> > public class Empresa { >> ... >> >> -- >> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >> Para enviar uma mensagem, env... >> >> -- >> 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 > -- 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
