Bom dia pessoal,
Estou pedindo uma ajuda urgente para vocês quanto a exclusão de entidades usando chave composta.
Tenho essas duas entidades:
@Entity
@Table(name = “requisitos_erp”)
@NamedQueries({@NamedQuery(name = “RequisitosErp.findAll”, query = “SELECT r FROM RequisitosErp r”),
@NamedQuery(name = “RequisitosErp.findByIdBts”, query = “SELECT r FROM RequisitosErp r WHERE r.requisitosErpPK.idBts = :idBts”),
@NamedQuery(name = “RequisitosErp.findByIdCap”, query = “SELECT r FROM RequisitosErp r WHERE r.requisitosErpPK.idCap = :idCap”),
@NamedQuery(name = “RequisitosErp.findByIdSubcap”, query = “SELECT r FROM RequisitosErp r WHERE r.requisitosErpPK.idSubcap = :idSubcap”),
@NamedQuery(name = “obterRequisitoPelaChave”,query = “SELECT r FROM RequisitosErp r WHERE r.requisitosErpPK.idBts = :idBts and r.requisitosErpPK.idCap = :idCap and r.requisitosErpPK.idSubcap = :idSubcap and r.requisitosErpPK.doc = :doc”),
@NamedQuery(name = “RequisitosErp.RequisitoERP”,query = “SELECT r FROM RequisitosErp r WHERE r.requisitosErpPK.idBts = :idBts and r.requisitosErpPK.idCap = :idCap and r.requisitosErpPK.idSubcap = :idSubcap”),
@NamedQuery(name = “RequisitosErp.delete”,query = “DELETE FROM RequisitosErp r WHERE r.requisitosErpPK.idBts = :idBts and r.requisitosErpPK.doc = :doc”),
@NamedQuery(name = “RequisitosErp.findByDoc”, query = “SELECT r FROM RequisitosErp r WHERE r.requisitosErpPK.doc = :doc”)})
public class RequisitosErp implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected RequisitosErpPK requisitosErpPK;
<a class="mention" href="/u/basic">@Basic</a>(optional = false)
<a class="mention" href="/u/lob">@Lob</a>
@Column(name = “requisito”)
private String requisito;
public RequisitosErp() {
}
public RequisitosErp(RequisitosErpPK requisitosErpPK) {
this.requisitosErpPK = requisitosErpPK;
}
public RequisitosErp(RequisitosErpPK requisitosErpPK, String requisito) {
this.requisitosErpPK = requisitosErpPK;
this.requisito = requisito;
}
public RequisitosErp(long idBts, int idCap, int idSubcap, String doc) {
this.requisitosErpPK = new RequisitosErpPK(idBts, idCap, idSubcap, doc);
}
public RequisitosErpPK getRequisitosErpPK() {
return requisitosErpPK;
}
public void setRequisitosErpPK(RequisitosErpPK requisitosErpPK) {
this.requisitosErpPK = requisitosErpPK;
}
public String getRequisito() {
return requisito;
}
public void setRequisito(String requisito) {
this.requisito = requisito;
}
Requisitos_ErpPk
@Embeddable
public class RequisitosErpPK implements Serializable {
<a class="mention" href="/u/basic">@Basic</a>(optional = false)
@Column(name = “id_bts”)
private long idBts;
<a class="mention" href="/u/basic">@Basic</a>(optional = false)
@Column(name = “id_cap”)
private int idCap;
<a class="mention" href="/u/basic">@Basic</a>(optional = false)
@Column(name = “id_subcap”)
private int idSubcap;
<a class="mention" href="/u/basic">@Basic</a>(optional = false)
@Column(name = “doc”)
private String doc;
public RequisitosErpPK() {
}
public RequisitosErpPK(long idBts, int idCap, int idSubcap, String doc) {
this.idBts = idBts;
this.idCap = idCap;
this.idSubcap = idSubcap;
this.doc = doc;
}
public long getIdBts() {
return idBts;
}
public void setIdBts(long idBts) {
this.idBts = idBts;
}
public int getIdCap() {
return idCap;
}
public void setIdCap(int idCap) {
this.idCap = idCap;
}
public int getIdSubcap() {
return idSubcap;
}
public void setIdSubcap(int idSubcap) {
this.idSubcap = idSubcap;
}
public String getDoc() {
return doc;
}
public void setDoc(String doc) {
this.doc = doc;
}
Estou fazendo uma função para exclusão de registro, só que não está funcionando.
To passando passo a passo como ta sendo feito:
long id_bts_erp = (Long) stIdBts.getValue();
int id_cap_erp = (Integer) stidCap.getValue();
int sub_cap_erp = (Integer) stIdSubcap.getValue();
String docERP;
String Requisito;
docERP = (String) stDocERP.getText();
Requisito = stRequisito.getText().toString();
//Obtendo o requisito a ser excluído
RequisitosERPDAO obterRequisitoDAO = new RequisitosERPDAO();
RequisitosErp reqERP = obterRequisitoDAO.obterRequisitoExclusao(id_bts_erp,id_cap_erp,sub_cap_erp,docERP,Requisito);
RequisitosERPDAO ExcluirRequisitoDAO = new RequisitosERPDAO();
try {
ExcluirRequisitoDAO.Excluir(reqERP);
info("Requisito excluído com sucesso!");
} catch (Exception e) {
info("Erro - Requisito não pôde ser excluído!");
}
return "CapituloEdicao";
}
public void Excluir(RequisitosErp requisitoerp) {
EntityManager em = Conecta.getEntityManager();
try {
RequisitosErp req = new RequisitosErp();
EntityTransaction utx = em.getTransaction();
RequisitosErp requisitoERP = em.find(RequisitosErp.class,requisitoerp);
utx.begin();
em.remove(requisitoERP);
utx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
em.close();
}
}
E está dando o seguinte erro:
Caused by: org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class beans.RequisitosErpPK, got class beans.RequisitosErp
Alguém poderia me ajudar a resolver essa exclusão?
Obrigada.