@OsmarAlves escreveu:
Pessoal, tenho uma tabela que possui uma Unique Key no campo descrição e classificacao (CLASSIFICACAO_ID_SUPERIOR). Ao tentar forçar o erro cadastrando um novo registro com a mesma descrição, não consigo tratar nenhuma exception, já tentei capturar todas as exceptions que aparecem no erro e não consigo evitá-lo.
Nesta aplicação estou usando JPA, JSF, EJB, wildfly 10.0.0 e a base de dados Oracle 11g.
Peço desculpas antecipadas, pois sou novo no fórum e na linguagem.
Entidade:
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import org.hibernate.validator.constraints.NotBlank; /** * The persistent class for the CLASSIFICACAO database table. * */ @Entity @NamedQuery(name="Classificacao.findAll", query="SELECT c FROM Classificacao c join fetch c.classificacao where c.classificacao.classificacaoId = 59131 order by c.descricao") public class Classificacao implements Serializable { private static final long serialVersionUID = 1L; // @Id @SequenceGenerator(name="CLASSIFICACAO_CLASSIFICACAOID_GENERATOR", sequenceName = "SEQ_CLASSIFICACAO", allocationSize = 1) @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CLASSIFICACAO_CLASSIFICACAOID_GENERATOR") @Column(name="CLASSIFICACAO_ID") private long classificacaoId; private String ativo; private String codccusto; private BigDecimal codcoligada; @Column(name="CODIGO_EXTERNO") private String codigoExterno; //@NotEmpty(message="É necessário informar a descrição da classificação.") @NotBlank private String descricao; //bi-directional many-to-one association to Classificacao @ManyToOne @JoinColumn(name="CLASSIFICACAO_ID_SUPERIOR") private Classificacao classificacao; //bi-directional many-to-one association to Classificacao @OneToMany(mappedBy="classificacao") private List<Classificacao> classificacaos; public Classificacao() { } //getters e setters }
DAO:
package br.com.hcancerbarretos.dao;import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import org.hibernate.exception.ConstraintViolationException; import br.com.hcancerbarretos.modelo.Classificacao; @Stateless public class ClassificacaoDao { @PersistenceContext private EntityManager manager; public void salvar(Classificacao classificacao){ try{ manager.merge(classificacao); } catch (ConstraintViolationException e) { e.printStackTrace(); } } //Restante do código }
Erro:
Erro.txt (61,0 KB)
Mensagens: 4
Participantes: 2