Pessoal, tenho uma tabela que possui umaUnique Key
no campo descrição e classificação (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)