Criei um método para o meu dao genérico e gostaria de saber se tem algum jeito de aprimorar o código em si, pois estou achando ele muito verboso. O método em si faz o update apenas de valores alterados, ou seja, caso algum valor venha como null, o método substitui o null pelo valor do objeto no banco de dados. Gostaria de usar algo como stream, mas não consigo executar nenhum método dps de usar setAcessible(true) do pacote java.reflection. Vou deixar o método abaixo.
public void dynamicUpdate(T object) {
try {
T objectDB = this.manager.find(clazz, object.getClass().getDeclaredMethod("getId").invoke(object));
Class<?> generic = object.getClass();
Class<?> genericDB = objectDB.getClass();
while (generic != null) {
for (Field field : generic.getDeclaredFields()) {
field.setAccessible(true);
if (field.get(object) == null) {
Field declaredField = genericDB.getDeclaredField(field.getName());
declaredField.setAccessible(true);
field.set(object, declaredField.get(objectDB));
}
}
generic = generic.getSuperclass();
genericDB = genericDB.getSuperclass();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
this.manager.merge(object);
}
}