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)

Reply via email to