此方法是每个字段中所做更改的日志,但是当发送一个布尔字段时给出错误NoSuchMethodException
当一个字段为布尔值时,这就像表中每个更改的审计表一样给出了异常
此代码
public Campo obtenerNombreValorCampo(Field campo, Object entity) {
Campo campoWrapper = null;
for (Annotation a2 : campo.getDeclaredAnnotations()) {
if (a2 instanceof Column) {
Column c = (Column) a2;
String nameMetodo = campo.getName().substring(0, 1).toUpperCase() + campo.getName().substring(1);
try {
// if (nameMetodo.equals("Activo") || nameMetodo.equals("RequiereHuellas")) {
// campoWrapper = new Campo();
// campoWrapper.setColumna(c.name());
// } else {
Object objeto = entity.getClass().getDeclaredMethod("get" + nameMetodo).invoke(entity);
campoWrapper = new Campo();
campoWrapper.setColumna(c.name());
if (objeto != null) {
campoWrapper.setValor(objeto.toString());
} else {
campoWrapper.setValor("SIN VALOR");
}
//}
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
} catch (NoSuchMethodException | SecurityException ex) {
Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
}
} else if (a2 instanceof JoinColumn) {
JoinColumn c = (JoinColumn) a2;
String nameMetodo = campo.getName().substring(0, 1).toUpperCase() + campo.getName().substring(1);
try {
//OBJETO FERANEA
Object objeto = entity.getClass().getDeclaredMethod("get" + nameMetodo).invoke(entity);
if (objeto != null) {
boolean poseeNombre = false;
Class clase = objeto.getClass();
for (Field f : clase.getDeclaredFields()) {//recorremos los campos
for (Annotation a3 : f.getDeclaredAnnotations()) {
if (a3 instanceof Id && !poseeNombre) {
String nameMetodo2 = f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1);
try {
Object objeto2 = objeto.getClass().getDeclaredMethod("get" + nameMetodo2).invoke(objeto);
campoWrapper = new Campo();
campoWrapper.setColumna(c.name());
if (objeto2 != null) {
campoWrapper.setValor(objeto2.toString());
} else {
campoWrapper.setValor("SIN VALOR");
}
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
} catch (NoSuchMethodException | SecurityException ex) {
Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
}
} else if (a3 instanceof Column) {
Column c2 = (Column) a3;
if (c2.name().equalsIgnoreCase("NOMBRE")) {
String nameMetodo2 = f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1);
try {
Object objeto2 = objeto.getClass().getDeclaredMethod("get" + nameMetodo2).invoke(objeto);
campoWrapper = new Campo();
campoWrapper.setColumna(c.name());
if (objeto2 != null) {
campoWrapper.setValor(objeto2.toString());
} else {
campoWrapper.setValor("SIN VALOR");
}
poseeNombre = true;
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
} catch (NoSuchMethodException | SecurityException ex) {
Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
}
}
}
}
}
}
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
} catch (NoSuchMethodException | SecurityException ex) {
Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
} catch (Exception ex) {
Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
}
}
}
return campoWrapper;
}

答案 0 :(得分:1)
这很正常。如果您有布尔值,则该方法不是get...
,而是is...