[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] Map-related Exception in M5
|
Hi rv,
Does adding an em.persist(data) some time before your flush help?
-Tom
wintermute@xxxxxxxxxxxxxxxxxx wrote:
Tom,
yes, this is a container-managed transaction committing, Glassfish
against MySQL.
Here's a snippet from the SLSB managing the entities:
-----
WidgetData data;
if(id > 0) {
data = em.find(WidgetData.class, id);
} else {
data = new WidgetData();
data.setApplicationInstance(applicationInstance);
if(partKey != null && partKey.length() > 0) {
applicationInstance.getParts().put(partKey, data);
data.setPartKey(partKey);
}
// flush to update the ID
em.flush();
}
data.setModificationTime(new Date());
data.setTitle(title);
data.setContent(content);
return data;
----
id is -1 in the test case in question, partKey is a String != null.
So there's a new WidgetData entity being added.
Snippet from the "WidgetApplicationInstance" entity:
----
@Id
@SequenceGenerator(name="WIDGETAPPLICATIONINSTANCE_SEQUENCE_GENERATOR")
@GeneratedValue(strategy=GenerationType.SEQUENCE,
generator="WIDGETAPPLICATIONINSTANCE_SEQUENCE_GENERATOR")
private long ID;
private int instanceNumber;
@ManyToOne
private WidgetApplication application;
@ManyToOne
private User owner;
@OneToMany(mappedBy="applicationInstance", cascade=CascadeType.ALL,
fetch=FetchType.EAGER)
@MapKey(name="partKey")
private Map<String, WidgetData> parts = new HashMap<String, WidgetData>();
@javax.persistence.Version
protected int optimisticLockVersion;
----
Thanks for looking into this,
rv
Am 20.03.2008 um 22:59 schrieb Tom Ware:
Hi,
Can you give us an idea of what you are doing? It looks like a
transaction is committing. What Entities are involved in the
transaction? How are they mapped? What change are you making?
Thanks,
Tom
wintermute@xxxxxxxxxxxxxxxxxx wrote:
Hi list,
I just deployed my application with EclipseLink M5, without any
trouble this time. For the most part, things look pretty good.
One of my entities, however, doesn't like to have it's map changed.
The code works in TL Essentials.
Has this been reported? Can I do anything to avoid the issue? (Stack
trace attached.)
Thanks,
rv
[#|2008-03-20T13:24:15.390+0100|WARNING|sun-appserver9.1|org.eclipse.persistence.session.file:/usr/local/server/glassfish/domains/domain1/applications/j2ee-apps/com.bookpac.server/pu.jar-ormpersistence.transaction|_ThreadID=48;_ThreadName=TestThread-c257e1ca1761a0f247942e3fddad;_RequestID=93b4959c-21f5-4938-a42b-0b53fa7f10bc;|
java.lang.NullPointerException
at
org.eclipse.persistence.internal.queries.MapContainerPolicy.compareKeys(MapContainerPolicy.java:147)
at
org.eclipse.persistence.internal.queries.ContainerPolicy.compareCollectionsForChange(ContainerPolicy.java:259)
at
org.eclipse.persistence.mappings.CollectionMapping.compareCollectionsForChange(CollectionMapping.java:323)
at
org.eclipse.persistence.mappings.CollectionMapping.compareForChange(CollectionMapping.java:363)
at
org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.createObjectChangeSetThroughComparison(DeferredChangeDetectionPolicy.java:135)
at
org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.createObjectChangeSet(DeferredChangeDetectionPolicy.java:114)
at
org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.calculateChanges(DeferredChangeDetectionPolicy.java:80)
at
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:523)
at
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1320)
at
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:2862)
at
org.eclipse.persistence.internal.jpa.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:209)
at
org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:157)
at
org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
at
com.sun.enterprise.distributedtx.J2EETransaction.commit(J2EETransaction.java:419)
at
com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:371)
at
com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3792)
at
com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3571)
at
com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1354)
at
com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)
at
com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:210)
at
com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:77)
at $Proxy306.setPerInstanceUserData(Unknown Source)
[...]
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users