Pessoal,
tô com o seguinte problema.
Tenho uma tabela que tem apenas dois campos : Id e Nome.
O Id não é autoincrement, ele é preenchido pelo usuário, junto com o nome.
Supondo que já tem no banco de dados um registro com Id 2 e nome X, e um com Id 3 e nome Y. Na tela, mostra os 2, podendo ser editados. O usuário edita o com Id 3, colocando Id 2, e clica pra fazer o update.
Se fizer esse update direto no Banco de Dados, é mostrado o erro de Unique Constraint Violated. Só que pela aplicação, não dá o erro, e ele faz o update, mudando o Nome do registro que tá com Id 2 pra Y (que era o nome que tava no 3).
O código que faz update é esse:
protected void update(T obj) throws DataAccessException {
try {
EntityManager em = getEntityManager();
em.merge(obj);
em.flush();
} catch (Exception e) {
throw new DataAccessException(e);
} finally {
close();
}
}
Fazendo o debug, ele não dá nenhuma exceção.
Minha pergunta é: teria como fazer uma comparação pra ver se o objeto que está dando update é o com mesmo Id do Banco de dados? Ou, pq não está lançando a exceção pela aplicação?