dev@glassfish.java.net

Re: PU with TX Type JTA

From: Marina Vatkina <Marina.Vatkina_at_Sun.COM>
Date: Fri, 15 Jun 2007 17:42:51 -0700

Sorry, I means if you want to use EntityTransaction, you need to have EMF
injected/lookedup.

Do you mean you don't see the data in the table or the table being created?

To get the former, you need transactions to commit the changes, to get the
latter, you need to use provider-specific tools. Do you use GlassFish with
Toplink Essentials? If yes, and you use CLI to deploy your app, you can just
specify --dropandcreatetables=true on the asadmin deploy. Otherwise, you'd need
to set the provider-specific properties in the persistence.xml file.

HTH,
-marina

Arun Gupta wrote:
> Cool! Changing my code to:
>
> -- cut here --
> @PersistenceUnit(unitName="JavaLibrary1PU")
> private EntityManagerFactory emf;
>
> EntityManager em = emf.createEntityManager();
> // em.getTransaction().begin();
> Company c = new Company("1", "AAA Co", (float)10.0, (float)2.0,
> (float)10.0, "Jun 15, 2007");
> em.persist(c);
> out.println("Persisting to the source ...");
> // em.getTransaction().commit();
> out.println("and now committed!");
> -- cut here --
>
> got away with that error and my web page now shows
>
> "Persisting to the source ... and now committed!"
>
> But I do not see the Table in the database URL identified in
> persistence.xml. What could be wrong ?
>
> -Arun
>
> Marina Vatkina wrote:
>
>> Arun,
>>
>> The exceptions are right - you can't mix and match the access types.
>> You need to either inject an EMF via @PersistenceUnit, and then create
>> an EM or use UserTransaction for the transaction boundaries.
>>
>> regards,
>> -marina
>>
>> Arun Gupta wrote:
>>
>>> Ok, I figured out how to set the transaction type (manually edit
>>> persistence.xml). But now I'm getting:
>>>
>>> -- cut here --
>>> Exception Description: Cannot use an EntityTransaction while using JTA.
>>> at
>>> oracle.toplink.essentials.internal.ejb.cmp3.transaction.JTATransactionWrapper.getTransaction(JTATransactionWrapper.java:66)
>>>
>>> at
>>> oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.getTransaction(EntityManagerImpl.java:340)
>>>
>>> at
>>> com.sun.enterprise.util.EntityManagerWrapper.getTransaction(EntityManagerWrapper.java:1094)
>>>
>>> -- cut here --
>>>
>>> Here is my code for a WebApplication:
>>> -- cut here --
>>> @PersistenceContext(unitName="JavaLibrary1PU")
>>> EntityManager em;
>>> em.getTransaction();
>>> Company c = new Company("1", "AAA Co", (float)10.0,
>>> (float)2.0, (float)10.0, "Jun 15, 2007");
>>> em.persist(c);
>>> out.println("Persisting to the source ...");
>>> em.getTransaction().commit();
>>> out.println("and now committed!");
>>> -- cut here --
>>>
>>> What is missing ?
>>>
>>> -Arun
>>>
>>> Arun Gupta wrote:
>>>
>>>> Here is a great error message I see when deploying an error:
>>>>
>>>> -- cut here --
>>>> Deploying application in domain failed; Deployment Error -- The
>>>> persistence-context-ref-name [sample.NewServlet/em] in module
>>>> [C:\Users\Arun Gupta\WebApplication5\build\web] resolves to a
>>>> persistence unit called [JavaLibrary1PU] which is of type
>>>> RESOURCE_LOCAL. Only persistence units with transaction type JTA can
>>>> be used as a container managed entity manager. Please verify your
>>>> application.
>>>> -- cut here --
>>>>
>>>> Little detailed but very clearly conveys what is possibly wrong in
>>>> the application. Now how do I fix it when generating this PU in NB ?
>>>>
>>>> -Arun
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>