[jboss-user] [EJB 3.0] - Re: problems with optimistic locking/persistence data in EJB
wiggy
do-not-reply at jboss.com
Mon Jan 14 16:11:53 EST 2008
wayne
thats not all complete problem -
as the remote debugger reported problems with the transaction failure when remote debugging into the server, i rewrote the removeLinks method in the local application client using an application scoped EM.
that way i could run the debugger in local mode.
| public static boolean removeLink (Node fromNode, Node remoteNode)
| {
| EntityManager em;
| EntityManagerFactory emf ;
| List<Link> res;
| boolean result = false;
|
| emf = Persistence.createEntityManagerFactory("embedDS");
|
| em = emf.createEntityManager();
|
| try
| {
| EntityTransaction t = em.getTransaction();
|
| t.begin();
| fromNode = em.merge(fromNode);
| remoteNode = em.merge(remoteNode);
| Query q = em.createNamedQuery("findLinksBetweenNodes");
| q.setParameter("toNode", remoteNode);
| q.setParameter("fromNode", fromNode);
|
| res = (List<Link>)q.getResultList();
| if (res != null && res.size () == 1)
| {
| Link link = res.get(0);
| remoteNode.deleteLinkFrom(link);
| fromNode.deleteLinkTo(link);
| em.remove(link);
| result = true;
| }
| else
| {result = false;}
|
| t.commit();
| return result;
| }
| finally
| {
| em.close();
| emf.close();
| }
|
| }
|
this essentally throws the same optimistic lock error - so its something to do with the transaction that this lives in updates the version for the attached elements. when this completes the next step in the main application path
|
| //local if (removeLink(uNode, zNode))
| if (nodeEAO.removeLink(uNode, zNode))
| {
|
| System.out.println ("deleted link : \n");
| }
|
| //update to latest version number
| yNode = nodeEAO.refresh(uNode);
|
the code errors with optimistic lock when i try and do an em.merge within the nodeEAO.refresh routine.
what this kind of implies i think is that i have to issue another "find" operation to reread a fresh copy of the entity back to avoid this rather than being able to "merge" the starting uNode back into the persistence context.
Is this the only/correct way to proceed - or am i not understanding properly and theres a easy 'correct' fix that would allow me to avoid the exception (I havnt tried to take the version annonation of yet - and see if it handles it without the optimistic lock force enabled.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4119816#4119816
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4119816
More information about the jboss-user
mailing list