Retornar campo onde ocorreu ConstraintViolationException ou EntityExistsException

Em algumas classes da minha aplicação tenho a necessidade do ID ser uma String e ser digitada pelo usuário, e também de ter campos marcados como unique.

o meu problema é o seguinte, se um usuário digita um campo que já existe ele me lança ou EntityExistsException ou ConstraintViolationException, só que não me lança (ou pelo menos ainda não conheço) o campo onde o exception ocorreu.

Ex.: Tenho uma classe Filial que tem o ID como String, quando tentar inserir o ID já existente no banco, gostaria que ele me falasse qual o campo (atributo, etc…) onde ocorreu a violação, se foi no ID, ou no EMAIL, etc…

Uso JPA com Hibernate

Tentei pegar o getConstraintName() do ConstraintViolationException mais veio null, e acredito que esse método não resolva meu problema, pois necessito do campo onde ocorreu e não o nome da CONSTRAINT

grato…

Ninguém precisou desse tipo de situação???