Thank you, Kevin.
On Thu, 2009-03-26 at 09:01 -0500, Kevin Sutter wrote: > Hi David, > I think we'll need a bit more information. Ok, no problem. I kept fiddling, but still no luck. I noticed that when stepping through the code, even with the @Table annotation, for some reason value for "given" is null. Anyway, here goes: Entity _______________________________________________ package net.leangen.expedition.openjpa.internal; import javax.persistence.*; @Entity @Table( name="person" ) public final class Person { private static final long serialVersionUID = 1L; private String sin; private String name; public Person(){} public Person( String aSin, String aName ) { sin = aSin; name = aName; } @Id public String getSin() { return sin; } public void setSin( String sin ) { this.sin = sin; } @Basic public String getName() { return name; } public void setName( String name ) { this.name = name; } @Override public String toString() { return getName(); } @Override public boolean equals( Object o ) { if( this == o ) return true; if( !( o instanceof Person ) ) return false; final Person that = (Person)o; return this.getSin().equals( that.getSin() ); } @Override public int hashCode() { return 17*getSin().hashCode(); } } persistence.xml (edited) _______________________________________________ <?xml version="1.0"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"> <persistence-unit name="openjpa"> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <class>net.leangen.expedition.openjpa.internal.Person</class> <properties> <property name="openjpa.ConnectionURL" value="jdbc:postgresql://xxxxx/xxxxx"/> <property name="openjpa.ConnectionDriverName" value="org.postgresql.Driver"/> <property name="openjpa.ConnectionUserName" value="xxxxx"/> <property name="openjpa.ConnectionPassword" value="xxxxx"/> <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/> <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/> </properties> </persistence-unit> </persistence> "main" code _______________________________________________ final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory( "openjpa" ); final Persister persister = new Persister( entityManagerFactory ); final Person person = new Person( "12345", "David Leangen" ); persister.createPerson( person ); final Collection<Person> people = persister.getAllPeople(); System.out.println("List of all people in db: "); for( final Person nextDude: people ) { System.out.println( nextDude.getName() ); } Thread.currentThread().setContextClassLoader( currentClassLoader ); Persister code _______________________________________________ package net.leangen.expedition.openjpa.internal; import java.util.*; import javax.persistence.*; public class Persister { private final EntityManagerFactory entityManagerFactory; public Persister( EntityManagerFactory anEntityManagerFactory ) { entityManagerFactory = anEntityManagerFactory; } @SuppressWarnings("unchecked") public Collection<Person> getAllPeople() { final EntityManager entityManager = entityManagerFactory.createEntityManager(); final EntityTransaction transaction = entityManager.getTransaction(); try { transaction.begin(); final List<Person> resultList = entityManager.createQuery( "select p from Persona p" ).getResultList(); return resultList; } finally { transaction.commit(); entityManager.close(); } } public void createPerson( Person person ) { final EntityManager entityManager = entityManagerFactory.createEntityManager(); final EntityTransaction transaction = entityManager.getTransaction(); try { transaction.begin(); entityManager.persist( person ); } finally { transaction.commit(); entityManager.close(); } } } pom.xml _______________________________________________ <project> ... <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>openjpa-maven-plugin</artifactId> <!-- use locally patched version for now --> <version>1.1-SNAPSHOT</version> <configuration> <includes>src/main/java/**/*.class</includes> <addDefaultConstructor>true</addDefaultConstructor> <enforcePropertyRestrictions>true</enforcePropertyRestrictions> <schemaAction>add</schemaAction> <toolProperties> <property> <name>addDefaultConstructor</name> <value>true</value> </property> <property> <name>enforcePropertyRestrictions</name> <value>true</value> </property> <property> <name>properties</name> <value>${basedir}/META-INF/persistence.xml</value> </property> </toolProperties> </configuration> <executions> <execution> <id>enhancer</id> <phase>process-classes</phase> <goals> <goal>enhance</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.apache.openjpa</groupId> <artifactId>openjpa</artifactId> <version>1.2.0</version> </dependency> </dependencies> </plugin> </plugins> </build> </project> Exception _______________________________________________ <openjpa-1.2.0-r422266:683325 fatal user error> org.apache.openjpa.persistence.ArgumentException: No table was given for persistent type "net.leangen.expedition.openjpa.internal.Person". at org.apache.openjpa.jdbc.meta.MappingInfo.createTable(MappingInfo.java:437) at org.apache.openjpa.jdbc.meta.ClassMappingInfo.getTable(ClassMappingInfo.java:241) at org.apache.openjpa.jdbc.meta.ClassMappingInfo.getTable(ClassMappingInfo.java:259) at org.apache.openjpa.jdbc.meta.strats.FullClassStrategy.map(FullClassStrategy.java:71) at org.apache.openjpa.jdbc.meta.ClassMapping.setStrategy(ClassMapping.java:377) at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:55) at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:333) at org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository.java:662) at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:549) at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308) at org.apache.openjpa.jdbc.meta.MappingRepository.getMapping(MappingRepository.java:285) at org.apache.openjpa.jdbc.meta.MappingTool.getMapping(MappingTool.java:676) at org.apache.openjpa.jdbc.meta.MappingTool.buildSchema(MappingTool.java:748) at org.apache.openjpa.jdbc.meta.MappingTool.run(MappingTool.java:646) at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:153) 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:145) at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) at net.leangen.expedition.openjpa.internal.Persister.createPerson(Persister.java:45) at net.leangen.expedition.openjpa.internal.Activator.start(Activator.java:58) at org.eclipse.osgi.framework.internal.core.BundleContextImpl $2.run(BundleContextImpl.java:1009) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:1003) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:984) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:257) at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:257) 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:585) at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:150) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:302) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:287) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:223) at java.lang.Thread.run(Thread.java:595)