publicvoidexcluir(Longid){try{BairroEntitybairro=buscarPorId(id);bairroRepositorio.remover(bairro,id);}catch(DataIntegrityViolationExceptione){thrownewExcecoes("Entidade não pode ser removida, pois contém registros vinculados!");}}
packagebr.com.netsoft.desif.model.endereco;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;importjavax.persistence.SequenceGenerator;importjavax.persistence.Table;importbr.com.netsoft.desif.model.DesIfEntity;importbr.com.netsoft.desif.model.desif.federal.MunicipioEntity;/** * Bairros dos paises, estados e municipios */@Entity@Table(name="end_bairros",schema="enderecos")publicclassBairroEntityimplementsSerializable{privatestaticfinallongserialVersionUID=-4597552877430986176L;privateLongid;privatePaisEntitypais;privateEstadoEntityestado;privateMunicipioEntitymunicipio;privateStringdescricao;@Id@Column(name="bai_id")@SequenceGenerator(name="enderecos.end_bairros_bai_id_seq",sequenceName="enderecos.end_bairros_bai_id_seq",allocationSize=1)@GeneratedValue(generator="enderecos.end_bairros_bai_id_seq",strategy=GenerationType.SEQUENCE)publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}@ManyToOne@JoinColumn(name="pai_id")publicPaisEntitygetPais(){returnpais;}publicvoidsetPais(PaisEntitypais){this.pais=pais;}@ManyToOne@JoinColumn(name="est_id")publicEstadoEntitygetEstado(){returnestado;}publicvoidsetEstado(EstadoEntityestado){this.estado=estado;}@ManyToOne@JoinColumn(name="mun_id")publicMunicipioEntitygetMunicipio(){returnmunicipio;}publicvoidsetMunicipio(MunicipioEntitymunicipio){this.municipio=municipio;}@Column(name="bai_descricao")publicStringgetDescricao(){returndescricao;}publicvoidsetDescricao(Stringdescricao){this.descricao=descricao;}}
D
DarkElf
Estranho, mas olha no seu banco quais são as dependências dessa tabela.
G
guilhermebhte
A exceção está ok, isto é, ela tem que aparecer mesmo.
O que quero melhorar é a apresentação para o cliente.
Tipo mostrar no html.
R
rmendes08
Você está usando algum framework, qual ?
D
DarkElf
Viajei agora…
Mas bem, no seu controller você precisa capturar essa exceção, e adicionar ela se não me engano no BindingResult ou algo assim do Spring. Porque do jeito que está fazendo a exceção vai estourar na cara do usuário mesmo.
A outra possibilidade é utilizar o @ControllerAdvice também do Spring para capturar exceções configuradas e e fazer a tratativa adequada da exceção.
Já no Thymeleaf vai depender de como você quer que seja exibido, já que não sei como você está utilizando ele.
Mas pensando bem, esse BindingResult só retorna erros quando os validações do objeto “tarefa” não deram certo, não?
Soluções que eu pensei:
-Eu sei que existe uma anotação em Spring que é algo como @HandlerException, para lidar quando as exceções ocorrem.
-Sei que dá para mapear o estado da requisição HTTP, e quando ela retornar 404(por exemplo) direcionar para uma página específica.
-Chamar um novo controller no catch da exceção?
Mas enfim, acho melhor esperar alguém que já lidou com isso.
@edit
Acho que utilizar Interceptor é uma boa também.
G
guilhermebhte
Estava usando o @Valid, Este @Valid só funciona para classes com a anotação @Entity ou para uma simples DTO ?
B
BlackHeartH
Não precisa da anotação @Entity, funciona em classes simples(java beans). Só precisa baixar as jars do bean validator e salvo engano alguma jar do hibernate.