public synchronized static void  saveOrUpdate(MyMessage msg)
{
    if(msg.getId()==0)
        save(msg);
    else{
        EntityManager em = factory.createEntityManager();
        EntityTransaction tx = null;
        MyMessage temp=null;
        try{
            while(em.find(MyMessage.class, msg.getId())==null){
                System.out.println("-----------Object not found----------");
                Thread.sleep(3000);
            }
        tx=em.getTransaction();
        tx.begin();
        temp = em.merge(msg);
        tx.commit();
        em.close();
        msg.setClientId(temp.getClientId());
        msg.setId(temp.getId());
        msg.setMessage(temp.getMessage());
        msg.setReceiverId(temp.getReceiverId());
        msg.setSenderId(temp.getSenderId());
        msg.setStatus(temp.getStatus());
        System.out.println("Sucessfully saved/updated @ server "+temp);
        }catch(Exception e){System.out.println(e);if(tx!=null) tx.rollback();if(em!=null) em.close();}
    }      
}
public static void  save(MyMessage msg)
{
    EntityManager em = factory.createEntityManager();
    EntityTransaction tx = null;
       try{
       tx=em.getTransaction();
       tx.begin();
       em.persist(msg);
       tx.commit();
       em.close();
      System.out.println("Sucessfully saved @ server "+msg);
        }catch(Exception e){System.out.println(e);if(tx!=null) tx.rollback();if(em!=null) em.close();}
}
When saving a new object with saveOrUpdate method it saves the object but next time when I have modified this object in detached mode and saving it via saveOrUpdate method then it always live in while loop, never comes outside the loop. Kindly help me, I am new in JPA and I am converting my project from Hibernate to JPA.
 
    