dev@glassfish.java.net

Re: PU with TX Type JTA

From: Lance J. Andersen <Lance.Andersen_at_Sun.COM>
Date: Mon, 18 Jun 2007 14:19:41 -0400

Arun,

This might be of use to you if you have not seen it

http://weblogs.java.net/blog/ss141213/archive/2005/12/introduction_to.html
as this is a simple servlet that Sahoo created.

Arun Gupta wrote:
> Lance,
>
> cil
>
>> 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
> This is a recent entry and has way too much details for HW.
could u please explain what HW is? Is it Home Work?
>
>> 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
>
> Bullet#5 says "default data source jdbc/sample". This is not valid for
> GlassFish V2 b50/NB 5.5.1. My code is now:
This is the old sample default DataSource config in Glassfish.
jdbc/__default is what ships now.
>
> -- cut here --
> utx.begin();
> EntityManagerFactory emf =
> Persistence.createEntityManagerFactory("JavaLibrary1PU");
> out.println("<h1>JPA Hello World!</h1>");
>
> EntityManager em = emf.createEntityManager();
> 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 ...");
> out.println("and now committed!");
>
> Company c2 = (Company) em.createQuery(
> "select c from Company c where c.id = :id")
> .setParameter("id", "1").getSingleResult();
> utx.commit();
> -- cut here --
>
> and giving the following exception:
>
> -- cut here --
> Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0 (Build
> b50-beta3 (06/06/2007))):
> oracle.toplink.essentials.exceptions.DatabaseException
> Internal Exception: java.sql.SQLException: Table/View 'COMPANY' does
> not exist.
I would enable logging via
      <property name="toplink.logging.level" value="FINE"/>

to see what is happening at deploy time as it looks like your table is
not being created.


> Error Code: -1
> Call: SELECT ID, CHANGE, PERCENTCHANGE, PRICE, LASTUPDATED,
> COMPANYNAME FROM COMPANY WHERE (ID = CAST (? AS VARCHAR(32672) ))
> bind => [1]
> Query: ReportQuery(sample.Company)
> at
> oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:319)
>
> at
> oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:566)
>
> at
> oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:452)
>
> -- cut here --
>
> I'm getting this inspite of persistence.xml containing
> drop-and-create-tables.
>
>>
>>
>> I think Mitesh and Marina answered your other questions. If not,
>> perhaps post your sample app and we can help you clean it up.
> Yes, I'd still like my app to work and understand the whys/wheres of
> getting JPA to work :)
>
> -Arun
>>
>> 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
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>