From: | Daryl Foster <daryl(dot)foster(at)oncenter(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org, pgsql-jdbc(at)postgresql(dot)org, pgsql-novice(at)postgresql(dot)org |
Subject: | Re: Cannot insert to 'path' field using EclipseLink |
Date: | 2014-03-12 17:12:20 |
Message-ID: | CABSa+vaLikCHbReG4L=gZ=93yWjy2qvc0oaySB1P3Ev6qtHX8g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-jdbc pgsql-novice |
I've manually entered some data into table to see if I could successfully
pull data from the table using EclipseLink. Now the
convertDataValueToObjectValue method in my Converter throws the following
exception:
java.lang.ClassCastException: org.postgresql.geometric.PGpath cannot be
cast to org.postgresql.geometric.PGpath
On Wed, Mar 12, 2014 at 7:37 AM, Daryl Foster <daryl(dot)foster(at)oncenter(dot)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 <http://www.oncenter.com/>*
From | Date | Subject | |
---|---|---|---|
Next Message | bobJobS | 2014-03-12 17:13:08 | Re: High Level Committers Wanted |
Previous Message | Adrian Klaver | 2014-03-12 17:09:58 | Re: High Level Committers Wanted |
From | Date | Subject | |
---|---|---|---|
Next Message | Steven Schlansker | 2014-03-12 17:40:46 | Re: Cannot insert to 'path' field using EclipseLink |
Previous Message | Sehrope Sarkuni | 2014-03-12 13:18:34 | Re: Cannot insert to 'path' field using EclipseLink |
From | Date | Subject | |
---|---|---|---|
Next Message | Steven Schlansker | 2014-03-12 17:40:46 | Re: Cannot insert to 'path' field using EclipseLink |
Previous Message | David Johnston | 2014-03-12 17:02:32 | Re: What is the difference between INSERT...RETURN and pl/pgsql RETURNING? |