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.