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: | Cannot insert to 'path' field using EclipseLink |
Date: | 2014-03-12 12:37:08 |
Message-ID: | CABSa+vajkRaDYkenwcbZnmFD0hakzG8DVL4z9TnnbpP1_jx_nw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-jdbc pgsql-novice |
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*
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2014-03-12 12:42:11 | Re: New here: trouble getting postgres 9.3 running as service on windows 8.1 |
Previous Message | Marko Kreen | 2014-03-12 11:40:50 | Re: libpq - lack of support to set the fetch size |
From | Date | Subject | |
---|---|---|---|
Next Message | Sehrope Sarkuni | 2014-03-12 13:18:34 | Re: Cannot insert to 'path' field using EclipseLink |
Previous Message | Dave Cramer | 2014-03-12 11:27:29 | Re: Concurrent use of isValid() |
From | Date | Subject | |
---|---|---|---|
Next Message | Sehrope Sarkuni | 2014-03-12 13:18:34 | Re: Cannot insert to 'path' field using EclipseLink |
Previous Message | Feosenop | 2014-03-12 08:20:32 | Re: Forgotten Password on Toshiba Satellite Windows 7 |