openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gopi <gopikandasw...@gmail.com>
Subject Problems with Interfaces
Date Mon, 26 Oct 2009 21:02:45 GMT

Hi,

I am new to JPA and OpenJPA. I am trying to work with interfaces in JPA and
I am getting some exceptions. Can someone please help me out.

Summary of the problem
---------------------------

I have an interface called Endpoint and an implementation of that called
EndpointObject. When I commit the EndpointObject to a database, I get the
exception that the 'relation endpoint does not exist'. I see a table called
'endpointobject' that is created in the database but not 'endpoint'. I have
provided all my code and all other details below.

1. Endpoint.java

import javax.persistence.Basic;
import javax.persistence.Id;

import org.apache.openjpa.persistence.ManagedInterface;

@ManagedInterface
public interface Endpoint {

	@Id
	public long getId();

	@Basic
	public String getSite_name();
	public void setSite_name(String siteName);

}

2. EndpointObject.java

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class EndpointObject implements Endpoint {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	
	@Basic
	private String site_name;

	public long getId() {
		return id;
	}

	public String getSite_name() {
		return site_name;
	}

	public void setSite_name(String siteName) {
		site_name = siteName;
	}

	public EndpointObject() {

	}
}

3. Main.java.

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import org.apache.openjpa.jdbc.kernel.TableJDBCSeq;
import org.apache.openjpa.meta.ClassMetaData;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
import org.apache.openjpa.persistence.OpenJPAPersistence;

public class Main {

	public static void main(String[] args) {

		EntityManagerFactory factory =
Persistence.createEntityManagerFactory("TestJPA1");
		EntityManager em = factory.createEntityManager();
		OpenJPAEntityManager em1 = OpenJPAPersistence.cast(em);

		try {
			Class c = Class.forName("Endpoint");

			OpenJPAEntityManagerFactory factory1 = em1.getEntityManagerFactory();
			OpenJPAEntityManagerFactorySPI spi = (OpenJPAEntityManagerFactorySPI)
factory1;
			spi.getConfiguration().getMetaDataRepositoryInstance().register(c);
			ClassMetaData cmd =
spi.getConfiguration().getMetaDataRepositoryInstance().addMetaData(c,
			                ClassMetaData.ACCESS_PROPERTY);

			cmd.setManagedInterface(true);
			String[] str = new String[2];
			str[0] = "-action";
			str[1] = "add";
			TableJDBCSeq.main(str);
			Endpoint ep = (Endpoint) em1.createInstance(c);
			ep.setSite_name("site_name1");

			em1.getTransaction().begin();
			em1.persist(ep);
			em1.getTransaction().commit();

			Query q = em1.createQuery("SELECT a FROM Endpoint a");

			for (int i = 0; i < q.getResultList().size(); ++i) {
				Endpoint ep1 = (Endpoint) q.getResultList().get(i);
				System.out.println(ep1.getId() + " " + ep.getSite_name());
			}
			em1.close();
			factory1.close();
			em.close();
			factory.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

4. orm.xml

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
</entity-mappings>


5. persistence.xml 

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
	<persistence-unit name="TestJPA1">
	   <provider> org.apache.openjpa.persistence.PersistenceProviderImpl
</provider>
        
        <class>EndpointObject</class>
        <properties>
            <property name="openjpa.ConnectionURL"
value="jdbc:postgresql://localhost:5432/datakoa"/>
            <property name="openjpa.ConnectionDriverName"
value="org.postgresql.Driver"/>
            <property name="openjpa.ConnectionUserName" value="gopi"/>
            <property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema"/>
            <property name="openjpa.ConnectionPassword" value="gopi"/>
        </properties>
        
    </persistence-unit>
</persistence>

6. I am running this on a Mac OSX 10.5.8

7. JVM is 

java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-226)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-92, mixed mode)

8. Postgres jdbc driver version is postgresql-8.4-701.jdbc3.jar
-- 
View this message in context: http://n2.nabble.com/Problems-with-Interfaces-tp3894934p3894934.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Mime
View raw message