Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [eclipselink-dev] Error in EMQueryJUnitTestSuite.testcreateNativeQueryWithSelectSQL on SAP NetWeaver

Hi Tom,

I'm not really familiar with the details of test framework either, but I guess the entity manager is taken from the TestRunnerBean:

@Stateless(name="TestRunner", mappedName="TestRunner")
public class TestRunnerBean implements TestRunner {
    /** The entity manager for the test is injected and passed to the test server platform. */
    private EntityManager entityManager;

    /** The entity manager factory for the test is injected and passed to the test server platform. */
    private EntityManagerFactory entityManagerFactory;

So yes, it is transaction-scoped. 

Best regards,

-----Original Message-----
From: eclipselink-dev-bounces@xxxxxxxxxxx [mailto:eclipselink-dev-bounces@xxxxxxxxxxx] On Behalf Of Tom Ware
Sent: Mittwoch, 25. November 2009 14:07
To: Dev mailing list for Eclipse Persistence Services
Subject: Re: [eclipselink-dev] Error in EMQueryJUnitTestSuite.testcreateNativeQueryWithSelectSQL on SAP NetWeaver

Hi Sabine,

   I am not familiar with how the entity manager for the tests are created.  The 
part of the spec you are referring to is for Transaction-scoped entity managers. 
  Is the entity manager used in this test created in such a way that it will be 
transaction-scoped on all servers?


Heider, Sabine wrote:
> Hi,
> I'd like to get your opinion on an error I get when running the JPA 
> server tests inside an SAP NetWeaver application server (stack 
> shortened, executed on current trunk):
> java.lang.IllegalStateException: Attempting to execute an operation on a 
> closed EntityManager.
> at 
> org.eclipse.persistence.internal.jpa.EntityManagerImpl.verifyOpen(
> at 
> org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeUpdate(
> at 
> org.eclipse.persistence.testing.tests.jpa.relationships.EMQueryJUnitTestSuite.testcreateNativeQueryWithSelectSQL(
> at 
> org.eclipse.persistence.testing.framework.junit.JUnitTestCase.runBareServer(
> at 
> org.eclipse.persistence.testing.framework.server.TestRunnerBean.runTest(
> I run the test against a MySQL database. The MySQL driver throws an 
> SQLException in EMQueryJUnitTestSuite line 114: Can not issue 
> executeUpdate() for SELECTs.
> Consequently, I end up in the catch block where the current transaction 
> is rolled back.
> Chapter 7.9.1 of the JPA specification says:
> "After the JTA transaction has completed (either by transaction commit 
> or rollback), The container
> closes the entity manager by calling EntityManager.close."
> Apparently, this is what the JPA container in NetWeaver does. With the 
> closed entity manager, however, query2 becomes unusable.
> In my opinion, it's an error of the test rather than of the JPA 
> container, but I might be wrong. What do you think?
> Thanks and best regards,
> Sabine
> *Sabine Heider
> **SAP AG
> *Pflichtangaben/Mandatory Disclosure Statements:
> _
> ------------------------------------------------------------------------
> _______________________________________________
> eclipselink-dev mailing list
> eclipselink-dev@xxxxxxxxxxx
eclipselink-dev mailing list

Back to the top