Hi Mike This is the full stack trace.
<openjpa-2.0.1-r422266:989424 nonfatal user error> org.apache.openjpa.persistence.InvalidStateException: Can only perform operation while a transaction is active. at org.apache.openjpa.kernel.BrokerImpl.assertTransactionOperation(BrokerImpl.java:4595) at org.apache.openjpa.kernel.BrokerImpl.rollback(BrokerImpl.java:1496) at org.apache.openjpa.kernel.DelegatingBroker.rollback(DelegatingBroker.java:933) at org.apache.openjpa.persistence.EntityManagerImpl.rollback(EntityManagerImpl.java:589) at com.copperarrow.crm.basemodel.jpa.UsersTest.testCommitUser(UsersTest.java:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod $1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.booter.ProviderFactory $ClassLoaderProxy.invoke(ProviderFactory.java:103) at $Proxy0.invoke(Unknown Source) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) com.copperarrow.crm.basemodel.jpa.PersistSuite Time elapsed: 0.091 sec <<< ERROR! <openjpa-2.0.1-r422266:989424 fatal user error> org.apache.openjpa.persistence.InvalidStateException: The context has been closed. The stack trace at which the context was closed is available if Runtime=TRACE logging is enabled. at org.apache.openjpa.kernel.BrokerImpl.assertOpen(BrokerImpl.java:4573) at org.apache.openjpa.kernel.BrokerImpl.beginOperation(BrokerImpl.java:1895) at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4271) at org.apache.openjpa.kernel.DelegatingBroker.close(DelegatingBroker.java:1346) at org.apache.openjpa.persistence.EntityManagerImpl.close(EntityManagerImpl.java:1282) at com.copperarrow.crm.basemodel.jpa.DatabaseConnection.shutdown(DatabaseConnection.java:72) at com.copperarrow.crm.basemodel.jpa.PersistSuite.tearDown(PersistSuite.java:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod $1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:37) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.booter.ProviderFactory $ClassLoaderProxy.invoke(ProviderFactory.java:103) at $Proxy0.invoke(Unknown Source) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) The full class code is as follows: @Entity @Table(name = "t_USERS") public class Users implements Serializable { /** Serialisation ID. **/ private static final long serialVersionUID = 1L; /** Entity id. **/ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; /** User ID. This will be a user ID starting from 0001. **/ @GeneratedValue(strategy = GenerationType.TABLE, generator = "UserGen") @TableGenerator(name = "UserGen", table = "USER_GEN", pkColumnName = "PK", valueColumnName = "USERID") private Long userID; /** User Name associated with the user used to login with. **/ private String userName; /** hash of the users password. **/ private String passHash; /** Role Category is the role of the user e.g. Admin, sales, etc. **/ @Enumerated(EnumType.STRING) private RoleCategory roleCategory; /** ci is the contact information associated with the user. **/ @Embedded private ContactInformation ci; /** * @return id */ public Long getId() { return id; } /** * @param nId the id to set */ public void setId(final Long nId) { this.id = nId; } /** * @return the serialVersionUID */ public static long getSerialVersionUID() { return serialVersionUID; } /** * @return the userID */ public Long getUserID() { return userID; } /** * @param userID the userID to set */ public void setUserID(Long userID) { this.userID = userID; } /** * @return the userName */ public String getUserName() { return userName; } /** * @param userName the userName to set */ public void setUserName(String userName) { this.userName = userName; } /** * @return the passHash */ public String getPassHash() { return passHash; } /** * @param passHash the passHash to set */ public void setPassHash(String passHash) { this.passHash = passHash; } /** * @return the roleCategory */ public RoleCategory getRoleCategory() { return roleCategory; } /** * @param roleCategory the roleCategory to set */ public void setRoleCategory(RoleCategory roleCategory) { this.roleCategory = roleCategory; } /** * @return the ci */ public ContactInformation getCi() { return ci; } /** * @param ci the ci to set */ public void setCi(ContactInformation ci) { this.ci = ci; } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(final Object object) { // TODO: Warning - this method won't work in the case the id fields // are not set if (!(object instanceof Users)) { return false; } Users other = (Users) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "com.copperarrow.crm.basemodel.jpa.Users[ id=" + id + " ]"; } If you need anything else just ask. Thanks David On Wed, 2011-02-23 at 09:17 -0600, Michael Dick wrote: > Hi David, > > Could you post the stack for the exception you're getting? > > GeneratedValues should be obtained by your non-jta-data-source (or > openjpa.ConnectionFactory2) - and that shouldn't require a > transaction. > > -mike > > On Wed, Feb 23, 2011 at 8:30 AM, David Beer > <david.m.b...@googlemail.com> wrote: > Hi all > > I am trying to get a value for a field set when commited to > the db, to > be auto generated. This field is not an ID for the table. I > seem to get > the error message "InvalidStateException: Can only perform > operation > while a transaction is active." > > My class looks like the following: > > @GeneratedValue(strategy = GenerationType.TABLE, generator = > "UserGen") > @TableGenerator(name = "UserGen", table = "USER_GEN", > pkColumnName = > "PK", valueColumnName = "USERID") > private Long userID; > > Any Thoughts. > > Thanks > > David > >