According to your requirement you can do this as follow.
you can take two database rows to two objects. Eg: SampleObject
public class SampleObject {
private String name;
private int age;
private String email;
public SampleObject(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
.
.
I imagine your results will be an object too. Eg : ResultObject
public class ResultObject {
private String fieldName;
private String OldObjectValue;
private String NewObjectValue;
.
.
You can just define a compareField kind of method in SampleObject
public List<ResultObject> compareFields(SampleObject object) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{
List<ResultObject> resultList = new ArrayList<ResultObject>();
Field[] fields = this.getClass().getDeclaredFields();
for(Field field : fields){
if(!field.get(this).equals(field.get(object))){
ResultObject resultObject = new ResultObject();
resultObject.setFieldName(field.getName());
resultObject.setOldObjectValue(field.get(this).toString());
resultObject.setNewObjectValue(field.get(object).toString());
resultList.add(resultObject);
}
}
return resultList;
}
Then you can make it work.
SampleObject object1 = new SampleObject("ABC", 29, "abc@amail.com");
SampleObject object2 = new SampleObject("XYZ", 29, "xyz@amail.com");
List<ResultObject> resultList = object1.compareFields(object2);
Thanks