I'd appreciate some comments about what I could be doing wrong. I am using build time enhancement.
Using openjpa v1.2.1. maven property set to... openjpa.jdbc.SynchronizeMappings = "buildSchema(ForeignKeys=true)" <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name="acct"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <jta-data-source>acct</jta-data-source> <non-jta-data-source>acctUnmanaged</non-jta-data-source> <properties> <property name="openjpa.jdbc.SynchronizeMappings" value="${openjpa.jdbc.SynchronizeMappings}"/> <property name="openjpa.FlushBeforeQueries" value="false"/> </properties> </persistence-unit> </persistence> I have EntityStore.addEntityType() as follows... public void addEntityType(final LegalEntityType legalEntityType) { entityManager.persist(legalEntityType); } LegalEntityType is nothing special... @Entity @Table(name = "legal_entity_types") public class LegalEntityType implements Serializable { @Id @Column(name = "entity_type") private String entityType; @Column(name = "entity_type_description") private String entityTypeDescription; ... blah, blah, blah } I get the following error when using hsqldb v1.8.0.7 under openejb, but I do not get it when using an existing postgresql database that I had setup manually. i.e. not using schema building. Caused by: <openjpa-1.2.1-r752877:753278 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: Table already exists: OPENJPA_SEQUENCE_TABLE in statement [CREATE TABLE OPENJPA_SEQUENCE_TABLE] {stmnt 77481349 CREATE TABLE OPENJPA_SEQUENCE_TABLE (ID TINYINT NOT NULL, SEQUENCE_VALUE BIGINT, PRIMARY KEY (ID))} [code=-21, state=S0001] at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:553) at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453) at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159) at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119) at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189) at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:105) at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:61) at org.apache.openejb.persistence.JtaEntityManager.persist(JtaEntityManager.java:97) at org.adamsbros.rmi.entities.EntityStore.addEntityType(EntityStore.java:90) 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.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:158) at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:141) at org.adamsbros.rmi.Profiler.profile(Profiler.java:39) 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.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:158) at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:141) at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:122) at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:221) at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:174) at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217) at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77) at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:281) ... 23 more Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Table already exists: OPENJPA_SEQUENCE_TABLE in statement [CREATE TABLE OPENJPA_SEQUENCE_TABLE] {stmnt 77481349 CREATE TABLE OPENJPA_SEQUENCE_TABLE (ID TINYINT NOT NULL, SEQUENCE_VALUE BIGINT, PRIMARY KEY (ID))} [code=-21, state=S0001] at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192) at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:57) at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingStatement.executeUpdate(LoggingConnectionDecorator.java:762) at org.apache.openjpa.lib.jdbc.DelegatingStatement.executeUpdate(DelegatingStatement.java:114) at org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1191) at org.apache.openjpa.jdbc.schema.SchemaTool.createTable(SchemaTool.java:949) at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:526) at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344) at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321) at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501) ... 53 more