Pessoal.
Estou recebendo o seguinte erro quando tento persistir um objeto já existente no banco…
Eu tenho uma Exception que trata isso, mas ele dá o erro “:Nested transaction not supported.”
Alguém já passou por isso ?
[]´s
Rodrigo
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.org.system4.DAO;
import br.org.system4.entity.Partner;
import java.math.BigDecimal;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityManager;
import javax.transaction.UserTransaction;
/**
*
* @author rodrigo.klein
*/
public class PartnerDAOjpa implements PartnerDAO{
private void persist(Object object) {
try {
Context ctx = new InitialContext();
UserTransaction utx = (UserTransaction) ctx.lookup("java:comp/env/UserTransaction");
utx.begin();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
em.persist(object);
utx.commit();
} catch (EntityExistsException ex){
try {
System.out.println("Update :");
Context ctx2 = new InitialContext();
UserTransaction utx2 = (UserTransaction) ctx2.lookup("java:comp/env/UserTransaction");
utx2.begin();
EntityManager em2 = (EntityManager) ctx2.lookup("java:comp/env/persistence/LogicalName");
em2.merge(object);
utx2.commit();
} catch (Exception exz) {
System.out.println("Error ::" + exz.getMessage());
}
} catch (Exception e) {
System.out.println("Error ::" + e.getMessage());
}
}
public void save(Partner partner) {
persist(partner);
}
public void delete(Partner partner) {
try {
Context ctx = new InitialContext();
UserTransaction utx = (UserTransaction) ctx.lookup("java:comp/env/UserTransaction");
utx.begin();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
em.remove(partner);
utx.commit();
} catch (Exception e) {
System.out.println("Error :"+e.getMessage());
}
}
public List getAllPartners() {
List partnerList = null;
try {
// SELECT i FROM Ium i
Context ctx = new InitialContext();
UserTransaction utx = (UserTransaction) ctx.lookup("java:comp/env/UserTransaction");
utx.begin();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
partnerList = em.createQuery("SELECT p from Partner p").getResultList();
utx.commit();
} catch (Exception exception) {
}
return partnerList;
}
public Partner getPartnerbyId(BigDecimal id) {
Partner partner = null;
try {
Context ctx = new InitialContext();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
partner = em.find(Partner.class, id);
} catch (Exception e) {
System.out.print(e.getMessage());
}
return partner;
}
public Partner getPartnerByCnpj(String cnpj){
Partner partner = null;
try {
//BigDecimal bgid = BigDecimal.valueOf(Double.valueOf(String.valueOf(id)));
Context ctx = new InitialContext();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
partner = (Partner) em.createNamedQuery("Partner.findByCnpj").setParameter("cnpj", cnpj).getSingleResult();
} catch (Exception e) {
System.out.print(e.getMessage());
}
return partner;
}
public Partner getPartnerByNome(String nome){
Partner partner = null;
try {
//BigDecimal bgid = BigDecimal.valueOf(Double.valueOf(String.valueOf(id)));
Context ctx = new InitialContext();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
partner = (Partner) em.createNamedQuery("Partner.findByNome").setParameter("nome", nome).getSingleResult();
} catch (Exception e) {
System.out.print(e.getMessage());
}
return partner;
}
public Partner getPartnerByRazao(String razao){
Partner partner = null;
try {
//BigDecimal bgid = BigDecimal.valueOf(Double.valueOf(String.valueOf(id)));
Context ctx = new InitialContext();
EntityManager em = (EntityManager) ctx.lookup("java:comp/env/persistence/LogicalName");
partner = (Partner) em.createNamedQuery("Partner.findByRazao").setParameter("razao", razao).getSingleResult();
} catch (Exception e) {
System.out.print(e.getMessage());
}
return partner;
}
}