persistence@glassfish.java.net

Re: Cannot see newly created object

From: christopher delahunt <christopher.delahunt_at_oracle.com>
Date: Mon, 30 Jun 2008 09:59:29 -0400

Hi Markus,

I know others have offered suggestions already, but I'm curious if the
getSingleResult() method was a typing mistake. It looks like you are
expecting m.find(ParentEntity.class, 1000) to return a query when it
will return a Parent entity. Also, if the parent->child relationship is
cascade persist, then you will have no need of calling the explicit
em.persist(child).


Best Regards,
Chris



Markus KARG wrote:
> I forgot to mention: Exactly the same code executed from within a
> session bean results in the new child beeing listed correctly.
>
> So what difference is between a MDB and a SB?
>
> Thanks! :-)
> Markus
>
> Markus Karg schrieb:
>> I have a strange problem and need your kind help. :-)
>>
>>
>> In GlassFishv2ur2, I am running a session bean that does:
>>
>> parent = em.find(ParentEntity.class, 1000).getSingleResult();
>> parent.getChildren();
>>
>> which lists the content of a OneToMany relationship.
>>
>> Now a message driven bean does:
>>
>> parent = em.find(ParentEntity.class, 1000).getSingleResult();
>> child = new ChildEntity(parent); // Implicitly sets "One"-Side
>> parent.getChildren().add(child); // Explicitly sets "Many"-Side
>> em.persist(child);
>>
>> When I go to the DBMS, I can see the row of the new child including
>> all fields. The child is correctly linked with the parent.
>>
>> But when running the listing again:
>>
>> parent = em.find(ParentEntity.class, 1000).getSingleResult();
>> parent.getChildren();
>>
>> Then still I do not see the new child. To make it appear, I must
>> undeploy and deploy. That is very weird, since it can be seen in the
>> database table, and I have set both sides of the relationship as you
>> can see in the code snippet.
>>
>> Looks like a cache problem, but I just do not understand how to solve
>> it.
>>
>> Has anybody an idea what the cause is and how to get rid of it?
>>
>> Thanks a lot! :-)
>> Markus
>>
>> QUIPSY QUALITY GmbH & Co. KG
>> Ein Unternehmen der MES-Gruppe
>> Stuttgarter Strasse 23
>> D-75179 Pforzheim
>> Tel: 07231-9189-52
>> Fax: 07231-9189-59
>> www.quipsy.de
>> karg_at_quipsy.de
>> Registergericht Mannheim HRA 701214
>> Geschäftsführer: Nils Schroeder
>>
>> Diese E-Mail enthält persönliche, vertrauliche und vor Weitergabe
>> geschützte Informationen und ist ausschließlich für den vorgesehenen
>> o.g. Empfänger (Adressaten) bestimmt. Falls Sie diese E-Mail
>> versehentlich erhalten haben und nicht der vorgesehene Empfänger
>> sind, bitten wir Sie, die E-Mail und deren Anhänge nicht
>> aufzubewahren, nicht zu vervielfältigen, nicht zu nutzen und nicht
>> weiterzugeben. Bitte informieren Sie uns als Absender über diesen
>> Zustellungsfehler und löschen Sie die E-Mail.
>>
>>
>>
>>
>>
>
>