C'est normal qu'il ne le reconnaisse plus car l'entité n'est plus liée à une transaction, d'où l'exception "...detached object...".
Il faut donc que tu réattaches l'entité à la transaction courante avec la méthode :
void EntityManager.refresh(Object entity)
Si l'objet a été modifié en dehors de la transaction et que tu veuilles appliquer ces modifications en base, il faut appeler :
Object EntityManager.merge(Object entity)
où l'objet retourné est une copie de l'entité liée à la transaction courante et modifiée.
Partager