Hi Davis.... there are some things that I consider very important about FDS
Assemblers...
1) PropertyProxyRegistry.getRegistry().register(HibernateProxy.class, new
HibernatePropertyProxy()); --> responsible for the transformation of
Hibernate proxys to mapped classes like: (See HibernateAssembler.java
provided in your FDS installation directory)
Clienti$$$EnhacedByCGLIB or something else to Clieti
2) FDS, when using data management, as Classes [Managed], and using lazy
Data Management Services association, deal with this problem in this method:
(see HibernateAssembler.java)
protected void fetchObjectProperties(Object inst)
Maybe you want to work on a solution based in HibernateAssembler. I had a
lot of problems using Hibernate without Data Management too....
You are welcome....
Ps. a particular question.... how about the Flex market in Italy? The
development is increasing?
Henrique
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf
Of Devis
Sent: sexta-feira, 18 de maio de 2007 11:18
To: flexdev
Subject: [flexdev] Re: detached entity .LazyInitializationException?
urgently
Hi Henrique
thanks .. yes if i'm develop a DTO object work fine..
I "hatred" Flex Data Service sometime, if you think that the great
open source comunity like www.graniteds.org has implemented lazy
initialization, i have spent week about this problem and only
HibernateAssembler resolves lazy associations. it's incredible that
FDS have no future about this.
As soon as Henrique and thank again for your availability (you are
only that replay me, i have post the same message in Adobe forum and
flexcoders) ...
Ciao
Devis
- Hide quoted text -
On May 18, 3:57 pm, "Henrique" <[EMAIL PROTECTED]> wrote:
> Hi Davis,
>
> I agree with you, I don't think you have to configure
> data-management-config.xml to use only messaging and I don't think you
have
> to use [Managed] in your Clienti.as too.
>
> About the lazy problem, the best approach to me is to pass to flex a plain
> Class that contains only the data that you will use in your view. It won't
> be the same as your Entity on JAVA.
>
> Another way is to use joins in your query to initialize relationships,
> setting null all other unnecessary properties. But this will take some of
> your time to implement, and you will have to use reflection to build
> something useful.
>
> Henrique.
>
> -----Original Message-----
> From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf
>
> Of Devis
> Sent: sexta-feira, 18 de maio de 2007 08:28
> To: flexdev
> Subject: [flexdev] Re: detached entity .LazyInitializationException?
> urgently
>
> Hi Henrique,
> i'm not using in my application DataService but only jms/queue, then i
> haven't configure
> data-management. (JBoss/Hibernate EntityManager)
>
> This my scenario:
> Java side
> 1)My Entity Class
> @Entity
> @Table(name = "clienti")
> ....
> @Column(name = "nome", nullable = false)
> private String nome;
>
> @Column(name = "cognome", nullable = false)
> private String cognome;
>
> @Column(name = "indirizzo")
> private String indirizzo;
>
> @JoinColumn(name = "lingua", referencedColumnName = "idlingua")
> @ManyToOne()
> private Lingue lingua;
> .....
> My Lingue class Entity
> @Id
> @Column(name = "idlingua", nullable = false)
> private Integer idlingua;
>
> @Column(name = "stringa", nullable = false)
> private String stringa;
>
> @Column(name = "immagine")
> private Integer immagine;
>
> @OneToMany(mappedBy = "lingua")
> private Collection<Users> usersCollection;
>
> @OneToMany(mappedBy = "langsubtitles")
> private Collection<Vhs> vhsCollection;
>
> My Session Facade
> //@Statless
> @Stateful
> public class ClientiFacade implements ClientiFacadeLocal {
>
> @PersistenceContext(type=PersistenceContextType.EXTENDED)
> private EntityManager em;
>
> /** Creates a new instance of ClientiFacade */
> public ClientiFacade() {
> }
>
> public void create(Clienti clienti) {
> em.persist(clienti);
> }
>
> public void edit(Clienti clienti) {
> em.merge(clienti);
> }
>
> public void destroy(Clienti clienti) {
> em.merge(clienti);
> em.remove(clienti);
> }
>
> public Clienti find(Object pk) {
> return (Clienti) em.find(Clienti.class, pk);
> }
>
> public List findAll() {
> List lista = null;
> try {
> UserTransaction tx = (UserTransaction) new
> InitialContext().lookup("UserTransaction");
> tx.begin();
> lista=em.createQuery("select object(o) from Clienti as
> o").getResultList();
> tx.commit();
> } catch (Exception ex) {
>
> ex.printStackTrace();
> }
> finally {
> em.clear();
> }
> return lista;
> }
>
> public Clienti findByName(String nome) {
>
> Clienti _cli
>
=(Clienti)em.createNamedQuery("Clienti.findByNome").setParameter("nome",nome
> ).getSingleResult();
>
> return _cli;
> }
>
> }
>
> My Java Mdb
>
> public void onMessage(Message message) {
> try {
>
> Clienti _msg = (Clienti)
> ((ObjectMessage)message).getObject();
> System.out.println("MessageBean onMessage"
> +_msg.getNome());
> ClientiFacadeLocal
>
facade=(ClientiFacadeLocal)CachingServiceLocator.getInstance().getLocalHome(
> ClientiFacade.class);
> Clienti _cli=facade.findByName(_msg.getNome());
> System.out.println("onMessage toString
> "+_cli.toString());
> .....
> push into a queue my _cli object ..... my
> vde_response_login quee
>
> Flex Side
>
> <!-- Code jms Risposta login utente-->
> <destination id="vde_response_login">
> <properties>
> <server>
> <durable>false</durable>
> <durable-store-manager>
> flex.messaging.durability.FileStoreManager
> </durable-store-manager>
> </server>
> <jms>
> <destination-type>Topic</destination-type>
> <message-type>javax.jms.ObjectMessage</message-type>
> <connection-factory>ConnectionFactory</connection-factory>
> <destination-jndi-name>topic/VdeResponseLoginQueue</destination-jndi-
> name>
> <destination-name>VdeResponseLoginQueue</destination-name>
> <delivery-mode>NON_PERSISTENT</delivery-mode>
> <message-priority>DEFAULT_PRIORITY</message-priority>
> <acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode>
> <transacted-sessions>false</transacted-sessions>
> <!-- (Optional) JNDI environment. Use when using JMS on a remote
> JNDI server. -->
> <initial-context-environment>
> <property>
> <name>Context.URL_PKG_PREFIXES</name>
> <value>org.jboss.naming:org.jnp.interfaces</value>
> </property>
> <property>
> <name>Context.PROVIDER_URL</name>
> <value>jnp://127.0.0.1:1099</value>
> </property>
> <property>
> <name>Context.INITIAL_CONTEXT_FACTORY</name>
> <value>org.jnp.interfaces.NamingContextFactory</value>
> </property>
> </initial-context-environment>
>
> </jms>
> </properties>
> <channels>
>
> <channel ref="my-rtmp"/>
>
> </channels>
>
> <adapter ref="jms"/>
> </destination>
>
> MY MXML
>
> public function RequestLogin():void
>
> {
>
> Subscribe();
> var message:AsyncMessage = new AsyncMessage();
> var obj:Clienti=new Clienti();
> obj.nome=tx_nome.text;
> message.body =obj;
> message.headers=new Array();
> message.headers["JMSCorrelationID"]=obj.nome;
> request_login.send(message);
> }
>
> private function messageLoginHandler(event:
> MessageEvent):void {
> _cli=event.message.body;
> trace('_Debug Devis '+event.message.body);
> }
>
> private function
faultHandler(event:MessageFaultEvent):void
> {
> Alert.show(event.faultString + "Errore");
> }
>
> private function onResult(event:ResultEvent):void {
> _cli=event.result as Clienti;
> }
>
> [Bindable]
> private var _cli:Clienti;
>
> <mx:Producer id="request_login" destination="vde_request_login"
> fault="faultHandler(event)"/>
>
> <mx:Consumer id="response_login" destination="vde_response_login"
> message="messageLoginHandler(event)"
> fault="faultHandler(event)"/>
>
> Thanks have you some idea? but in this scenario i think i don't
> configure data-management right?
> Devis
>
> On May 18, 3:33 am, "Henrique" <[EMAIL PROTECTED]> wrote:
> > Hi Davis,
>
> > Can you write down your data-management-config.xml. Are you mapping your
> > associations on this file?
>
> > Henrique
>
> > -----Original Message-----
> > From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf
>
> > Of Devis
> > Sent: quinta-feira, 17 de maio de 2007 13:09
> > To: flexdev
> > Subject: [flexdev] Re: detached entity .LazyInitializationException?
> > urgently
>
> > Sorry to all, if i post in english i'm italian.
> > Hi to all,
> > i'm disperate with my prblem.
> > I have this scenario:
> > 1)I'm using jms/mdb ejb3 with jboss 4.2
> > 2)I'm using FDS with Consumer/Producer comp.
>
> > My mdb
>
> > public void onMessage(Message message) {
> > try {
>
> > Clienti _msg = (Clienti)
> > ((ObjectMessage)message).getObject();
> > System.out.println("MessageBean onMessage"
> > +_msg.getNome());
> > ClientiFacadeRemote
>
>
facade=(ClientiFacadeRemote)CachingServiceLocator.getInstance().getRemoteHom
> > e(Cl
> > \
> > ientiFacade.class);
> > Clienti _cli=facade.findByName(_msg.getNome());
> > System.out.println("onMessage toString "+_cli.toString());
> > Clienti _cl = new Clienti(_cli);
> > //to queue
> > Send(_cl);
>
> > this my ClientFacade
> > @Stateless
> > //@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
> > public class ClientiFacade implements ClientiFacadeRemote {
>
> > @PersistenceContext()
>
> > private EntityManager em;
> > //private EntityManagerFactory entityManagerFactory =
> > Persistence.createEntityManagerFactory("NuovVdeUN");
> > //EntityManager em = entityManagerFactory.createEntityManager();
>
> > /** Creates a new instance of ClientiFacade */
> > public ClientiFacade() {
> > }
>
> > public void create(Clienti clienti) {
> > em.persist(clienti);
> > }
>
> > public void edit(Clienti clienti) {
> > em.merge(clienti);
> > }
>
> > public void destroy(Clienti clienti) {
> > em.merge(clienti);
> > em.remove(clienti);
> > }
>
> > public Clienti find(Object pk) {
> > return (Clienti) em.find(Clienti.class, pk);
> > }
>
> > public List findAll() {
>
> > return em.createQuery("select object(o) from Clienti as
> > o").getResultList();
> > }
>
> > public Clienti findByName(String nome) {
> > Clienti _cli
>
>
=(Clienti)em.createNamedQuery("Clienti.findByNome").setParameter("nome",nome
> > ).ge
> > \
> > tSingleResult();
> > em.clear();
> > return _cli;
> > }
>
> > }
>
> > vde.com.ejb.vo.Clienti is my EJB3 Entity with some Lazy collection
> > ActionScript DTO
> > import mx.collections.ArrayCollection;
> > [Managed]
> > [RemoteClass (alias="vde.com.ejb.vo.Clienti")]
> > public class Clienti
> > ......
>
> > I have made 30 test/example with Persistence.Extended @Steful etc.
> > my last test using EntityManager.clear for detached entity...
> > but my ActionScript dto always try to initialize all my collection
> > lazy and throws my exception "Lazy and
> > flex.messaging.io.ArrayCollection.<init>(ArrayCollection.java:44
> > ........
>
> > Why if my backend doesn't initiliaze some Lazy Collection why my Flex
> > wonts that all lazy collection are initilaze? Pls it's a week that i
> > have this problem.
> > I have read inwww.graniteds.org(opersource alternative) .."With
> > GDS, you can keep those uninitialized references with lazy"... but how
> > i can doing this with Fds.
> > I have also download Live Cycle data beta but i have the same problem.
> > Can you help me pls?
> > Ciao e grazie
> > Devis
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---