dev@glassfish.java.net

Re: PU with TX Type JTA

From: Arun Gupta <Arun.Gupta_at_Sun.COM>
Date: Sat, 16 Jun 2007 18:53:02 -0700

On java.net, are you talking about [1] ? That only got me where I'm
right now but still missing why my application is not able to persist
the data in database. I've not tried the app as is because I'd like
something really simple.

I search "JPA" on netbeans.org and get pointers to (in order):

1). http://wiki.netbeans.org/wiki/view/UsingJSFAndFaceletsInNetbeans
Certainly does not qualify as HW!

2). Second link is: http://wiki.netbeans.org/wiki/view/UsingHibernateWithJPA

This requires an additional software (Hibernate) and does not work
out-of-the-box (using TopLink). I don't qualify this as HW!

3rd & 4th link are FishEye.

5th link is: http://www.netbeans.org/kb/55/persistence.html This uses
JSF and I don't qualify this as HW.

Rest of the links are FishEye or not directly relevant.

I'm looking for a plain-vanilla example of JPA where no other "frills"
are required or used. That would be using JPA in an index.jsp (without
any frameworks) using TopLink on GlassFish promoted build.

Googling web or netbeans.org does not seem to point me to such a
resource. JavaEE5 tutorial also requires to understand the Duke's
Bookstore scenario.

In order to understand the technology, I'd like to keep the additional
requirements to zero or minimal.

Can you point me to such a blog or article ?

Either way I'd like to understand why my application is not able to
create database tables even though I'm getting the error:

-- cut here --
JDO76609: Got SQLException executing statement "CREATE TABLE COMPANY (ID
VARCHAR(255) NOT NULL, CHANGE FLOAT, PERCENTCHANGE FLOAT, PRICE FLOAT,
LASTUPDATED VARCHAR(255), COMPANYNAME VARCHAR(255), PRIMARY KEY (ID))":
java.sql.SQLException: Table/View 'COMPANY' already exists in Schema 'APP'.
-- cut here --

persistence.xml has "jdbc:derby://localhost:1527/sample;create=true" and
when I connect using NetBeans to this URL, the table is not shown. And
of course, then there is no data there as well :) What am I missing ?

[1]
https://glassfish.dev.java.net/javaee5/persistence/persistence-example.html#Using_in_Java_EE

-Arun

Lance J. Andersen wrote:
> Hi Arun,
>
> There are a bunch of blogs similar to what u are suggesting already and
> a few good articles on netbeans.org.
>
> download the app from the blog on java.net i just put together on JPA,
> netbeans and webstart, perhaps that will help answer some of your questions
>
> Regards
> Lance
>
> Arun Gupta wrote:
>> cil
>>
>> Marina Vatkina wrote:
>>> Sorry, I means if you want to use EntityTransaction, you need to have
>>> EMF injected/lookedup.
>> I'm just trying to create a JPA Hello World using NetBeans IDE and
>> then blog about it and I'd like to do it the easiest way :) Injection,
>> to me, is better than hand-creating a TX!
>>
>>>
>>> Do you mean you don't see the data in the table or the table being
>>> created?
>> Yep, neither the table and of course no data.
>>
>>>
>>> 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?
>> Yes
>>
>>> If yes, and you use CLI to deploy your app, you can just specify
>>> --dropandcreatetables=true on the asadmin
>> persistence.xml has:
>>
>> <property name="toplink.ddl-generation" value="create-tables"/>
>>
>> And I'd like to the deployment from NetBeans, not CLI.
>>
>> What else ?
>>
>> -Arun
>>> 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
>>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>

-- 
Technology Evangelist
Web Technologies and Standards
Sun Microsystems, Inc.
Blog: http://blogs.sun.com/arungupta