There is a servlet that gets a stateless session bean by its JNDI binding name. The servlet makes several calls to the session bean. Each call manipulates one, or more, entity beans. In some cases, an entity bean (CMP) is returned to the caller in the servlet. When this same entity bean instance is passed back into the same session bean, it appears to be detached. This is shown by the exceptions in the logs and the fact that everything works ok if the entity bean instance(s) are "merge"ed by the session bean.
Why is this? How can it be address so the "merge" is no longer required. All of the entity bean methods are explicitly annotated as REQUIRED transaction (same as the default).