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")
@Remote(TestRunner.class)
@TransactionManagement(TransactionManagementType.BEAN)
public class TestRunnerBean implements TestRunner {
    
    /** The entity manager for the test is injected and passed to the test server platform. */
    @PersistenceContext
    private EntityManager entityManager;

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

So yes, it is transaction-scoped. 

Best regards,
Sabine

-----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?

-Tom

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(EntityManagerImpl.java:1516)
> at 
> org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeUpdate(EJBQueryImpl.java:492)
> at 
> org.eclipse.persistence.testing.tests.jpa.relationships.EMQueryJUnitTestSuite.testcreateNativeQueryWithSelectSQL(EMQueryJUnitTestSuite.java:121)
> at 
> org.eclipse.persistence.testing.framework.junit.JUnitTestCase.runBareServer(JUnitTestCase.java:463)
> at 
> org.eclipse.persistence.testing.framework.server.TestRunnerBean.runTest(TestRunnerBean.java:87)
>  
> 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:
> _http://www.sap.com/company/legal/impressum.epx_
>  
>  
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> eclipselink-dev mailing list
> eclipselink-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-dev
_______________________________________________
eclipselink-dev mailing list
eclipselink-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-dev


Back to the top