Olá amigos, minha dúvida é simples: tenho um campo nome no meu banco de dados que deve ser único, porém não defini nenhuma constraint pra isso pois quero tratar na aplicação.
Quando vou inserir, verifico se o nome existe e caso não exista, faço a inserção.
Quando vou editar, verifico se o nome existe, porém se eu não tiver alterado o nome, ele existirá pois é o que eu estou editando. Também pode ocorrer de alterar o nome para um outro que já exista, neste caso ele existirá mas não será o que estou editando. Então no primeiro caso devo permitir a operação, e no segundo não, sendo assim estou utilizando o seguinte código:
...
} else if (getStatus().equals("editar")) {
try {
//Verifica se já tem usuário com o mesmo nome
usuarioQuery = minhaPU.createQuery("SELECT u FROM Usuarios u WHERE u.usuario = '" + txUsuario.getText() + "'");
// Se não retornar nenhum ou retornar o que está em edição
if (usuarioQuery.getResultList().isEmpty()
|| (Usuarios) usuarioQuery.getSingleResult() == usuario) {
minhaPU.getTransaction().begin();
...
Gostaria de saber como vocês tratam isso, se tem alguma sugestão melhor.
Obrigado!