> On Mar 12, 2014, at 10:12 AM, Daryl Foster <daryl.fos...@oncenter.com> wrote: > > java.lang.ClassCastException: org.postgresql.geometric.PGpath cannot be cast > to org.postgresql.geometric.PGpath >
That's a sure sign of ClassLoader confusion. Make sure there is only one copy of the driver jar in your application or the JBoss container, but never both. > >> On Wed, Mar 12, 2014 at 7:37 AM, Daryl Foster <daryl.fos...@oncenter.com> >> wrote: >> I have a java app running in JBoss that uses EclipseLink to persist to a >> Postgres database. I've added a field with a 'path' datatype to one of the >> tables but I keep getting the following exception when I try to insert data: >> >> org.postgresql.util.PSQLException: Can't infer the SQL type to use for an >> instance of org.postgresql.geometric.PGpath. Use setObject() with an >> explicit Types value to specify the type to use. >> >> Here's the table definition: >> >> CREATE TABLE schema.table_name >> ( >> item_id uuid NOT NULL, >> item_path path NOT NULL >> ) >> >> The java entity is representing the item_path field as a List<Point> object, >> and I'm using a converter to map from the List<Point> object to a PGpath >> object: >> >> import org.eclipse.persistence.mappings.DatabaseMapping; >> import org.eclipse.persistence.mappings.converters.Converter; >> import org.eclipse.persistence.sessions.Session; >> import org.postgresql.geometric.PGpath; >> import java.awt.Point; >> import java.util.ArrayList; >> import java.util.List; >> import static java.sql.Types.OTHER; >> >> public class PgPathConverter implements Converter >> { >> @Override >> public boolean isMutable () >> { >> return false; >> } >> >> @Override >> public List<Point> convertDataValueToObjectValue (Object value, >> Session session) >> { >> // Code that converts PGpath to List<Point> >> } >> >> @Override >> public PGpath convertObjectValueToDataValue (Object value, Session >> session) >> { >> // Code that converts List<Point> to PGpath >> } >> >> @Override >> public void initialize (DatabaseMapping mapping, Session session) >> { >> mapping.getField ().setSqlType (OTHER); >> } >> } >> >> The entity class is defined as follows: >> >> @Entity >> @Table ( >> name = "table_name", >> schema = "schema" >> ) >> @Converter ( >> name = "path", >> converterClass = PgPathConverter.class >> ) >> public class TableName >> { >> public TableName () {} >> private static final long serialVersionUID = 1L; >> >> @Column (name = "item_path") >> @Convert ("path") >> private List<Point> m_ItemPath; >> >> @Id >> @Column ( >> name = "item_id", >> unique = true, >> nullable = false >> ) >> private UUID m_ItemId; >> >> public UUID getItemId () >> { >> return m_ItemId; >> } >> >> public List<Point> getItemPath () >> { >> return m_InkPath; >> } >> >> public void setItemId (UUID itemId) >> { >> m_ItemId = itemId; >> } >> >> public void setInkPath (List<Point> itemPath) >> { >> m_ItemPath = itemPath; >> } >> } >> >> Finally, here's the exception I get when I call `EntityManager.persist >> (entity)`: >> >> 18:10:33,789 ERROR [org.jboss.as.ejb3] (http-/0.0.0.0:8080-1) >> javax.ejb.EJBTransactionRolledbackException: Exception [EclipseLink-4002] >> (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): >> org.eclipse.persistence.exceptions.DatabaseException >> Internal Exception: org.postgresql.util.PSQLException: Can't infer the >> SQL type to use for an instance of org.postgresql.geometric.PGpath. Use >> setObject() with an explicit Types value to specify the type to use. >> Error Code: 0 >> Call: INSERT INTO schema.table_name (item_id, item_path) VALUES (?, ?) >> bind => [2 parameters bound] >> 18:10:33,789 ERROR [org.jboss.as.ejb3.invocation] (http-/0.0.0.0:8080-1) >> JBAS014134: EJB Invocation failed on component TableNameRepository for >> method public void com.mycompany.myproject.data.Repository.flush() throws >> javax.persistence.TransactionRequiredException,javax.persistence.PersistenceException: >> javax.ejb.EJBTransactionRolledbackException: Exception [EclipseLink-4002] >> (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): >> org.eclipse.persistence.exceptions.DatabaseException >> Internal Exception: org.postgresql.util.PSQLException: Can't infer the >> SQL type to use for an instance of org.postgresql.geometric.PGpath. Use >> setObject() with an explicit Types value to specify the type to use. >> Error Code: 0 >> Call: INSERT INTO schema.table_name (item_id, item_path VALUES (?, ?) >> bind => [2 parameters bound] >> at >> org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:138) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:228) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:317) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:214) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) >> [jboss-as-ee-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55) >> [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) >> [jboss-as-ee-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165) >> [jboss-as-ee-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:182) >> [jboss-as-ee-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> at >> org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) >> [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2] >> at >> org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:72) >> [jboss-as-ee-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8] >> ... >> -- >> Sincerely, >> Daryl Foster > > > > -- > Sincerely, > Daryl Foster > Software Engineer > On Center Software, Inc. > > P: 281.210.0177 > F: 281.297.9001 > W: www.oncenter.com