Olá, eu tenho um servidor mysql conectado a meu sistema, via JPA 2.0, mas na hora de inserir um cadastro em processos, está dando o seguinte erro:
O erro está apenas nas foreign keys, mas eu não consigo entender, pois já fiz outras foreign keys idênticas e funcionaram, mas essa não
javax.persistence.RollbackException: Exception [EclipseLink-7197] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Null or zero primary key encountered in unit of work clone [Entidades.Coloutroindices[ idColoutroindices=0 ]], primary key [0]. Set descriptors IdValidation or the "eclipselink.id-validation" property.
Exception Description: Null or zero primary key encountered in unit of work clone [Entidades.Coloutroindices[ idColoutroindices=0 ]], primary key [0]. Set descriptors IdValidation or the "eclipselink.id-validation" property.
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:157)
at DAO.DAOGenerico.inserir(DAOGenerico.java:19)
at Controla.ControlaProcessos.addPro(ControlaProcessos.java:39)
at Cadastra.CadastraProcessos$9.actionPerformed(CadastraProcessos.java:782)
Segue o actionlistener que dá o problema:
btAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
StringTools stT = new StringTools();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Processo p = new Processo();
for(Reclamado r:lRecl){
if(r.getIdReclamado()==cbRecl.getSelectedIndex()){
p.setReclamadoIdReclamado(r);
}
}
for(Coloutroindices c:lCol){
if(c.getIdColoutroindices()==cbTabela.getSelectedIndex()){
p.setColoutroindicesIdColoutroindices(c);
}
}
p.setIdProcesso(cPro.getNextId());
p.setNprocesso(tfNumeroProcess.getText());
p.setAdmissaoProcesso(sdf.parse(tfDatAdmiss.getText()));
p.setAjuizamentoProcesso(sdf.parse(tfDatAjuiz.getText()));
p.setCalculoProcesso(sdf.parse(tfDatCalc.getText()));
p.setCorrecaoProcesso(String.valueOf(cPro.setCor(rbCorrThis.isSelected(),rbCorrThat.isSelected())));
p.setDemissaoProcesso(sdf.parse(tfDatDemiss.getText()));
p.setDepvinculadaProcesso(cPro.setDep(chbFgtsDep.isSelected()));
p.setFgtsProcesso(tfFgts.getText());
p.setInssProcesso(String.valueOf(cPro.setInss(rbInssMes.isSelected(),rbInssTot.isSelected(),rbInssNoCalc.isSelected())));
p.setIrrfProcesso(String.valueOf(cPro.setIrrf(rbIrrfMes.isSelected(),rbIrrfTot.isSelected(),rbIrrfIn.isSelected(),rbIrrfNoCalc.isSelected())));
p.setJurosProcesso(String.valueOf(cPro.setJuros(rbJurosDia.isSelected(),rbJurosMes.isSelected())));
p.setLiberacaoProcesso(sdf.parse(tfDatLib.getText()));
p.setNautosProcesso(tfNumeroAuto.getText());
p.setParametrosProcesso(String.valueOf(cPro.setParametros(chbParamRef.isSelected(),chbParamCalc.isSelected(),chbParamDsr.isSelected())));
p.setPrazoProcesso(sdf.parse(tfDatPraz.getText()));
p.setPrescricaoProcesso(sdf.parse(tfDatPresc.getText()));
p.setReclamanteProcesso(tfReclamante.getText());
p.setStatusProcesso(String.valueOf(cPro.setSta(rbStaAfz.isSelected(),rbStaEm.isSelected(),rbStaConc.isSelected(),rbStaEntr.isSelected())));
if(cPro.addPro(p)){
JOptionPane.showMessageDialog(null,"Seu Processo foi cadastrado com sucesso!");
}
else{
JOptionPane.showMessageDialog(null,"Não foi possível cadastrar o processo!");
}
} catch (Exception E) {
E.printStackTrace();
JOptionPane.showMessageDialog(null, "Não foi possível inserir o processo!");
}
}
});
segue o método insert, getRecl e getCol
public Coloutroindices getCol(int id){
System.out.println(id);
List<Coloutroindices> lCol=daoCol.listInOrderId();
Coloutroindices c=new Coloutroindices();
for(Coloutroindices fg:lCol){
if(fg.getIdColoutroindices()==id){
c=fg;
}
}
return c;
}
public Reclamado getRecl(int id){
System.out.println(id);
List<Reclamado> lRecl=daoRec.listInOrderId();
Reclamado i=new Reclamado();
for(Reclamado r:lRecl){
if(r.getIdReclamado()==id){
i=r;
}
}
return i;
}
public String setDep(boolean b){
if(b){
return "s";
}
else{
return "n";
}
}
public boolean addPro(Processo P) {
try {
daoProcesso.inserir(P);
return true;
} catch (Exception E) {
E.printStackTrace();
return false;
}
}
considere que as listas estão funcionando bem, pois eu já tentei pegar os itens dela via “sout” e todas funcionou perfeitamente, só a partir do inserir que não ocorre
segue o inserir (OBS: eu sei que não ha nada de errado nessa classe, pois eu utilizo ela como base para conexões com outras tabelas e, ela funciona perfeitamente)
public static EntityManager em = Persistence.createEntityManagerFactory("UP").createEntityManager();
private Class clazz;
public DAOGenerico(Class clazz) {
this.clazz = clazz;
}
public void inserir(T e) {
em.getTransaction().begin();
em.persist(e);
em.getTransaction().commit();
}
public void atualizar(T e) {
em.getTransaction().begin();
em.merge(e);
em.getTransaction().commit();
}
public void remover(T e) {
em.getTransaction().begin();
em.remove(e);
em.getTransaction().commit();
}
public T obter(int id) {
return (T) em.find(clazz, id);
}
public List<T> list() {
return em.createQuery("SELECT e FROM " + clazz.getSimpleName() + " e").getResultList();
}