Thank you for you reply Cameron. I have searched my code up and down and I can't see any conflicting references.
Let me add some more information, in case it is one of those

problems that i should have spotted a long time ago. What am I saying? I am sure it is.
I am seeing some of this behavior on merge statements too now. I do a merge operation it fails. I try the exact same operation, it succeeds. More then likely, the first time I try it after opening my application, it fails, and the second time I try it, it succeeds. In the case it fails, I do an em.find() immediately after the em.merge() to see what the database thinks and the database returns the updated entity. Therefore, the fail occurs later in time as if maybe the em reference used to do the merge just disappears into the sunset never to be seen or heard from again. I try commit() but this does no good.