|
|
|
Re: Eclipselink is attempting to convert fields it's not supposed to [message #1719081 is a reply to message #1715971] |
Tue, 05 January 2016 01:08 |
David Wheeler Messages: 6 Registered: November 2015 |
Junior Member |
|
|
I've attempted to make a reproduction case, but I can't reproduce it outside of our main product, so presumably there's interference from something else, or else the reproduction case is too simple. I'm happy to try any suggestions to get the reproduction case to reproduce it.
One potential oddity to point out is that we're not using the @Id field (which is a UUID) to link the two entities, we're using a different candidate key (usn), which is the one that is triggering the problem.
Any help would be appreciated
Entity code snippits:
@Entity
@Table(name="newsagentsubscriberqueue", schema="smartedition")
@NamedQueries({
@NamedQuery(name="NewsagentSubscriberQueue.getUnprocessedSubscribersByUsn", query="Select n from NewsagentSubscriberQueue n where n.processed is null and n.usn = :usn")
})
public class NewsagentSubscriberQueue implements Serializable
{
[...]
@Id
@Converter(converterClass=UUIDConverter.class, name="newsagentSubscriberQueue_uuid")
@Convert("newsagentSubscriberQueue_uuid")
@Column(name="newsagentsubscriberqueue")
private UUID newsagentSubscriberQueue = UUID.randomUUID();
private String usn;
[more basic fields ...]
@ManyToOne
@JoinColumn(name="usn", referencedColumnName="usn", insertable=false, updatable=false)
private NewsagentSubscriberState subscriberState;
[getters & setters...]
}
@Entity
@Table(name="newsagentsubscriberstate", schema="smartedition")
public class NewsagentSubscriberState implements Serializable
{
@Id
@Converter(converterClass=UUIDConverter.class, name="newsagentsubscriberstate_uuid")
@Convert("newsagentsubscriberstate_uuid")
@Column(name="newsagentsubscriberstate")
private UUID newsagentSubscriberState = UUID.randomUUID();
private String usn;
[...]
@OneToMany (mappedBy="subscriberState", orphanRemoval=true)
private Set<NewsagentSubscriberQueue> newsagentSubscriberQueue;
[getters & setters...]
}
Local Exception Stack:
Exception [EclipseLink-3002] (Eclipse Persistence Services - 2.6.1.qualifier): org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [2142420823], of class [class java.lang.String], from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[usn-->smartedition.newsagentsubscriberqueue.usn]] with descriptor [RelationalDescriptor(com.inomial.newsagent.entities.NewsagentSubscriberQueue --> [DatabaseTable(smartedition.newsagentsubscriberqueue)])], could not be converted to [class java.util.UUID].
at org.eclipse.persistence.exceptions.ConversionException.couldNotBeConverted(ConversionException.java:78)
at org.eclipse.persistence.internal.helper.ConversionManager.convertObject(ConversionManager.java:176)
at org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.convertObject(DatasourcePlatform.java:179)
at org.eclipse.persistence.mappings.foundation.AbstractDirectMapping.getFieldValue(AbstractDirectMapping.java:789)
at org.eclipse.persistence.internal.expressions.QueryKeyExpression.getFieldValue(QueryKeyExpression.java:420)
at org.eclipse.persistence.internal.expressions.ParameterExpression.getValue(ParameterExpression.java:299)
at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.translate(DatabaseCall.java:1102)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:241)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:299)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:694)
at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2740)
at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:2693)
at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:559)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1175)
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:904)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1134)
at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:460)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1222)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1857)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1839)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804)
at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:258)
at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:473)
at com.inomial.newsagent.listener.NewsagentProvisionManagerBean.deleteFromSubscriberQueue(NewsagentProvisionManagerBean.java:267)
Triggering code:
TypedQuery<NewsagentSubscriberQueue> query = entityManager.createNamedQuery("NewsagentSubscriberQueue.getUnprocessedSubscribersByUsn", NewsagentSubscriberQueue.class);
query.setParameter("usn", usn);
List<NewsagentSubscriberQueue> queue = query.getResultList(); <-- Exception thrown here
|
|
|
|
Powered by
FUDForum. Page generated in 0.03360 seconds