Sure thing. I just noticed something suspicious: "A down level Entity was detected and logged". Could that have something to do with the problem?
19:00:31,348 INFO ClassPathXmlApplicationContext:495 - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2f833eca: startup date [Wed Mar 14 19:00:31 CDT 2012]; root of context hierarchy 19:00:31,417 INFO XmlBeanDefinitionReader:315 - Loading XML bean definitions from file [/home/matthew/dev/statthing/statthing/backend/model/target/classes/META-INF/spring/applicationContext.xml] 19:00:31,964 INFO PropertySourcesPlaceholderConfigurer:177 - Loading properties file from file [/home/matthew/dev/statthing/statthing/backend/model/target/classes/META-INF/spring/database.properties] 19:00:31,985 INFO DefaultListableBeanFactory:557 - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@11dfc8a0: defining beans [org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0,org.springframework.context.config.internalBeanConfigurerAspect,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,transactionManager,org.springframework.transaction.config.internalTransactionAspect,dataSource,entityManagerFactory,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 19:00:32,146 INFO LocalContainerEntityManagerFactoryBean:253 - Building JPA container EntityManagerFactory for persistence unit 'persistenceUnit' 20 persistenceUnit WARN [main] openjpa.Runtime - An error occurred while registering a ClassTransformer with PersistenceUnitInfo: name 'persistenceUnit', root URL [file:/home/matthew/dev/statthing/statthing/backend/model/target/classes/]. The error has been consumed. To see it, set your openjpa.Runtime log level to TRACE. Load-time class transformation will not be available. 82 persistenceUnit INFO [main] openjpa.Runtime - OpenJPA dynamically loaded a validation provider. 156 persistenceUnit INFO [main] openjpa.Runtime - Starting OpenJPA 2.2.0 187 persistenceUnit INFO [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary". 1087 persistenceUnit INFO [main] openjpa.Runtime - The Entity "com.statthing.model.volleyball.FloorRegionList" was enhanced at level "1,055,128", but the current level of enhancement is "1,241,207". 1090 persistenceUnit INFO [main] openjpa.Runtime - A down level Entity was detected and logged. Please enable RUNTIME trace to see all down level Entities. Exception in thread "main" org.springframework.orm.jpa.JpaSystemException: The transaction has been rolled back. See the nested exceptions for details on the errors that occurred.; nested exception is <openjpa-2.2.0-r422266:1244990 fatal general error> org.apache.openjpa.persistence.PersistenceException: The transaction has been rolled back. See the nested exceptions for details on the errors that occurred. at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:326) at org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:120) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:516) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$afterReturning$org_springframework_transaction_aspectj_AbstractTransactionAspect$3$2a73e96c(AbstractTransactionAspect.aj:78) at com.statthing.model.volleyball.FloorConfiguration_Roo_Jpa_ActiveRecord.ajc$interMethod$com_statthing_model_volleyball_FloorConfiguration_Roo_Jpa_ActiveRecord$com_statthing_model_volleyball_FloorConfiguration$persist(FloorConfiguration_Roo_Jpa_ActiveRecord.aj:44) at com.statthing.model.volleyball.FloorConfiguration.persist(FloorConfiguration.java:1) at com.statthing.model.volleyball.FloorConfiguration_Roo_Jpa_ActiveRecord.ajc$interMethodDispatch1$com_statthing_model_volleyball_FloorConfiguration_Roo_Jpa_ActiveRecord$com_statthing_model_volleyball_FloorConfiguration$persist(FloorConfiguration_Roo_Jpa_ActiveRecord.aj) at com.statthing.model.volleyball.seeder.Seeder.seed(Seeder.java:78) at com.statthing.model.volleyball.seeder.Seeder$1.doInJpa(Seeder.java:43) at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:187) at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:150) at com.statthing.model.volleyball.seeder.Seeder.execute(Seeder.java:38) at com.statthing.model.volleyball.seeder.Seeder.main(Seeder.java:24) Caused by: <openjpa-2.2.0-r422266:1244990 fatal general error> org.apache.openjpa.persistence.PersistenceException: The transaction has been rolled back. See the nested exceptions for details on the errors that occurred. at org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2337) at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2174) at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2072) at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1990) at org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81) at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1514) at org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:933) at org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:570) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:512) ... 13 more Caused by: <openjpa-2.2.0-r422266:1244990 fatal user error> org.apache.openjpa.persistence.InvalidStateException: Attempt to set column "FloorRegion.version" to two different values: (null)"null", (class java.lang.Integer)"1" This can occur when you fail to set both sides of a two-sided relation between objects, or when you map different fields to the same column, but you do not keep the values of these fields in synch. at org.apache.openjpa.jdbc.sql.PrimaryRow.setObject(PrimaryRow.java:344) at org.apache.openjpa.jdbc.sql.RowImpl.setObject(RowImpl.java:510) at org.apache.openjpa.jdbc.meta.strats.ColumnVersionStrategy.insert(ColumnVersionStrategy.java:192) at org.apache.openjpa.jdbc.meta.Version.insert(Version.java:293) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.insert(AbstractUpdateManager.java:236) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.populateRowManager(AbstractUpdateManager.java:162) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:95) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:76) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:713) at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:131) ... 21 more On Thu, Mar 15, 2012 at 8:09 AM, Rick Curtis <curti...@gmail.com> wrote: > Matthew- > > Could you post the full exception stack? > > Thanks, > Rick > > On Wed, Mar 14, 2012 at 7:19 PM, Matthew Adams <matt...@matthewadams.me>wrote: > >> Hi all, >> >> Vitals: Maven 3.0.3, Roo 1.2.1.RELEASE, OpenJPA 2.2.0, MySQL 5.1.x, >> Ubuntu 11.10 64-bit, JDK 6 (1.6.0_30) 64-bit >> >> I'm getting an error with OpenJPA 2.2.0 that seems to have popped up a >> fair bit with other folks out on the Internet over the years. Can >> anyone see anything in my mappings that is either wrong or would cause >> this exception? I've been struggling with this for hours, trying all >> sorts of different mappings and nothing seems to help! >> >> Here's the exception snippet: >> ===== >> <openjpa-2.2.0-r422266:1244990 fatal user error> >> org.apache.openjpa.persistence.InvalidStateException: Attempt to set >> column "FloorRegion.version" to two different values: (null)"null", >> (class java.lang.Integer)"1" This can occur when you fail to set both >> sides of a two-sided relation between objects, or when you map >> different fields to the same column, but you do not keep the values of >> these fields in synch. >> ===== >> >> The class in question, FloorRegion, is the target of a unidirectional >> one-to-many relationship, owned by class FloorRegionList. Here's the >> relevant part of FloorRegionList: >> ===== >> @Table(name = "FloorRegionList") >> public class FloorRegionList implements HasCourtSize { >> >> @OneToMany(cascade = { CascadeType.PERSIST, CascadeType.DETACH, >> CascadeType.MERGE, CascadeType.REFRESH }) >> // unidirectional one-to-many using join column >> @JoinColumn(name = "owner", referencedColumnName = "id", nullable = >> true) >> protected List<FloorRegion> regions = new ArrayList<FloorRegion>(); >> ===== >> >> The FloorRegion class doesn't know anything whatsoever about >> FloorRegionList; it just has a couple of ints and five embedded >> FloorPoint instances: >> ===== >> @Table(name = "FloorRegion") >> public class FloorRegion implements HasCourtSize { >> >> @Column(nullable = false) >> protected int width; >> >> @Column(nullable = false) >> protected int length; >> >> @Embedded >> @AttributeOverrides({ >> @AttributeOverride(name = "w", column = @Column(name = >> "lfw", nullable = false)), >> @AttributeOverride(name = "l", column = @Column(name = >> "lfl", nullable = false)) }) >> protected FloorPoint leftFront; >> >> @Embedded >> @AttributeOverrides({ >> @AttributeOverride(name = "w", column = @Column(name = >> "lbw", nullable = false)), >> @AttributeOverride(name = "l", column = @Column(name = >> "lbl", nullable = false)) }) >> protected FloorPoint leftBack; >> >> @Embedded >> @AttributeOverrides({ >> @AttributeOverride(name = "w", column = @Column(name = >> "rfw", nullable = false)), >> @AttributeOverride(name = "l", column = @Column(name = >> "rfl", nullable = false)) }) >> protected FloorPoint rightFront; >> >> @Embedded >> @AttributeOverrides({ >> @AttributeOverride(name = "w", column = @Column(name = >> "rbw", nullable = false)), >> @AttributeOverride(name = "l", column = @Column(name = >> "rbl", nullable = false)) }) >> protected FloorPoint rightBack; >> >> @Embedded >> @AttributeOverrides({ >> @AttributeOverride(name = "w", column = @Column(name = >> "cw", nullable = false)), >> @AttributeOverride(name = "l", column = @Column(name = >> "cl", nullable = false)) }) >> protected FloorPoint center; >> ===== >> >> Here's my persistence.xml (note addition of foreign key constraints): >> ===== >> <?xml version="1.0" encoding="UTF-8" standalone="no"?> >> <persistence >> xmlns="http://java.sun.com/xml/ns/persistence" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> version="2.0" >> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence >> http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> >> <persistence-unit >> name="persistenceUnit" >> transaction-type="RESOURCE_LOCAL"> >> >> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> >> <properties> >> <property >> name="openjpa.jdbc.DBDictionary" >> value="org.apache.openjpa.jdbc.sql.MySQLDictionary" /> >> <!-- value="buildSchema" to runtime forward map the DDL SQL; >> value="validate" makes no changes to the database --> >> <property >> name="openjpa.jdbc.SynchronizeMappings" >> value="validate" /> >> <property >> name="openjpa.RuntimeUnenhancedClasses" >> value="unsupported" /> >> <property >> name="openjpa.jdbc.MappingDefaults" >> value="ForeignKeyDeleteAction=restrict, >> JoinForeignKeyDeleteAction=restrict" /> >> </properties> >> </persistence-unit> >> </persistence> >> ===== >> >> Here's a snippet from my pom.xml that has to do with OpenJPA >> enhancement. It enhances, generates a clean schema DDL file, a >> differential one, connects to the database & refreshes it (during the >> process-classes phase), and then during the post-integration-test >> phase, runs a main class that seeds the database with an initial set >> of entities. >> ===== >> <plugin> >> <groupId>org.codehaus.mojo</groupId> >> <artifactId>openjpa-maven-plugin</artifactId> >> <version>1.2</version> >> <executions> >> <execution> >> <id>enhance-classes</id> >> <phase>process-classes</phase> >> <goals> >> <goal>enhance</goal> >> </goals> >> <configuration> >> >> <includes>${statthing.entities.ant.pathspec}</includes> >> <excludes>**/*_Roo_*.class</excludes> >> >> <addDefaultConstructor>true</addDefaultConstructor> >> </configuration> >> </execution> >> <execution> >> <id>generate-ddl-file-complete</id> >> <phase>process-classes</phase> >> <goals> >> <goal>sql</goal> >> </goals> >> <configuration> >> >> <includes>${statthing.entities.ant.pathspec}</includes> >> <excludes>**/*_Roo_*.class</excludes> >> <sqlAction>build</sqlAction> >> <foreignKeys>true</foreignKeys> >> >> <sqlFile>${statthing.db.ddl.file.complete}</sqlFile> >> </configuration> >> </execution> >> <execution> >> <id>generate-ddl-file-diff</id> >> <phase>process-classes</phase> >> <goals> >> <goal>sql</goal> >> </goals> >> <configuration> >> >> <includes>${statthing.entities.ant.pathspec}</includes> >> <excludes>**/*_Roo_*.class</excludes> >> <sqlAction>refresh</sqlAction> >> <foreignKeys>true</foreignKeys> >> <sqlFile>${statthing.db.ddl.file.diff}</sqlFile> >> >> <connectionDriverName>${statthing.db.connection.driver.name >> }</connectionDriverName> >> >> >> <connectionDriverName>com.mchange.v2.c3p0.ComboPooledDataSource</connectionDriverName> >> >> >> <connectionProperties>${statthing.db.connection.properties}</connectionProperties> >> </configuration> >> </execution> >> <execution> >> <id>generate-ddl-db</id> >> <phase>process-classes</phase> >> <goals> >> <goal>sql</goal> >> </goals> >> <configuration> >> >> <includes>${statthing.entities.ant.pathspec}</includes> >> <excludes>**/*_Roo_*.class</excludes> >> <sqlAction>refresh</sqlAction> >> <foreignKeys>true</foreignKeys> >> <modifyDatabase>true</modifyDatabase> >> >> <connectionDriverName>${statthing.db.connection.driver.name >> }</connectionDriverName> >> >> >> <connectionDriverName>com.mchange.v2.c3p0.ComboPooledDataSource</connectionDriverName> >> >> >> <connectionProperties>${statthing.db.connection.properties}</connectionProperties> >> </configuration> >> </execution> >> </executions> >> <dependencies> >> <dependency> >> <groupId>org.apache.openjpa</groupId> >> <artifactId>openjpa</artifactId> >> <version>2.1.1</version> >> <exclusions> >> <exclusion> >> <groupId>commons-logging</groupId> >> <artifactId>commons-logging</artifactId> >> </exclusion> >> <exclusion> >> <groupId>org.apache.geronimo.specs</groupId> >> >> <artifactId>geronimo-jms_1.1_spec</artifactId> >> </exclusion> >> </exclusions> >> </dependency> >> </dependencies> >> </plugin> >> <plugin> >> <groupId>org.codehaus.mojo</groupId> >> <artifactId>exec-maven-plugin</artifactId> >> <version>1.2.1</version> >> <executions> >> <execution> >> <id>seed-database</id> >> <goals> >> <goal>exec</goal> >> </goals> >> <phase>post-integration-test</phase> >> </execution> >> </executions> >> <configuration> >> <executable>java</executable> >> <classpathScope>test</classpathScope> >> <arguments> >> <argument>-Xdebug</argument> >> >> >> <argument>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005</argument> >> <argument>-classpath</argument> >> <classpath /> >> >> <argument>com.statthing.model.volleyball.seeder.Seeder</argument> >> </arguments> >> </configuration> >> </plugin> >> >> ===== >> >> Thanks, >> Matthew >> >> -- >> @matthewadams12 >> mailto:matt...@matthewadams.me >> skype:matthewadams12 >> yahoo:matthewadams >> aol:matthewadams12 >> google-talk:matthewadam...@gmail.com >> msn:matt...@matthewadams.me >> http://matthewadams.me >> http://www.linkedin.com/in/matthewadams >> > > > > -- > *Rick Curtis* -- @matthewadams12 mailto:matt...@matthewadams.me skype:matthewadams12 yahoo:matthewadams aol:matthewadams12 google-talk:matthewadam...@gmail.com msn:matt...@matthewadams.me http://matthewadams.me http://www.linkedin.com/in/matthewadams