> 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

Reply via email to