Boa tarde, estou tentando criar um método para um DAO genérico onde de acordo com o objeto que vem no parametro o metódo verifica se aquele objeto existe no banco de dados, se existir ele da merge, senão ele persiste. Estou tentando usar reflection, e ele funciona com o merge, mas quando não existe ele vai direto para a exception do catch, tive algumas idéias, mas não consegui. No momento tenho esse código abaixo, alguma dica? Obrigado.
public void save(T object){
try {
Field declaredField = object.getClass().getDeclaredField("id");
declaredField.setAccessible(true);
if(this.manager.find(clazz, declaredField.get(object)) != null){
this.manager.merge(object);
}else{
this.manager.persist(object);
}
} catch (IllegalArgumentException e) {
this.manager.persist(object);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}