[
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