dev@glassfish.java.net

Re: PU with TX Type JTA

From: Lance J. Andersen <Lance.Andersen_at_Sun.COM>
Date: Mon, 18 Jun 2007 10:23:58 -0400

Hi Arun,

For simple examples using a Java SE application with Java Persistence
(the JSP part are not covered but I can help you if needed)

http://weblogs.java.net/blog/lancea/archive/2007/06/using_java_web.html
https://glassfish.dev.java.net/javaee5/persistence/persistence-example.html
http://www.netbeans.org/kb/55/persistence-j2se.html

This is a pretty basic example using a simple web app
http://www.netbeans.org/kb/55/persistence.html


I think Mitesh and Marina answered your other questions. If not,
perhaps post your sample app and we can help you clean it up.

Regards
lancde

Arun Gupta wrote:
> 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
>>
>