Hello, good afternoon!
Can someone help me to return a treated message when it occurs ** com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Can not delete or update parent row: a foreign key constraint fails ( loja
. produto
, CONSTRAINT id
FOREIGN KEY ( categoria_id
) REFERENCES categoria
( id
)) **?
When trying to delete a category in which I already have an associated product, I want to return the message that the deletion is not possible, but I am not able to perform this treatment.
**Entidade:**
@Table(name = "categoria")
@Entity
public class Categoria implements Serializable {
/*Attributes*/
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "CATEGORIA_ID", sequenceName = "CATEGORIA_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CATEGORIA_ID")
private Integer id;
private String nome;
private String ativo;
/*======================= Associações =======================*/
/* Uma categoria tem vários produtos */
@OneToMany(mappedBy = "categoria")
private List<Produto> produtos = new ArrayList<>();;
/*===================== Fim Associações =====================*/
**RESOURCE:**
/*----------------------------------------------------*
* delete - Categoria
*----------------------------------------------------*/
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public ResponseEntity<Void> delete(@PathVariable Integer id) {
categoriaService.delete(id);
return ResponseEntity.noContent().build();
}
**SERVICE:**
public void delete(Integer id) {
find_id(id);
try {
categoriaRepository.deleteById(id);
} catch (Exception e) {
if (e instanceof com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException) {
throw new DataIntegrityException("Não é possível excluir uma categoria que possui produtos");
}
}
}
Error displaying in Insomimnia or PostMan:
Thanks in advance for your attention!