Diferença entre estados de objetos indicando qual atributo foi alterado

Fala pessoal,

alguém sabe alguma forma de comparar dois objetos e, caso haja alguma alteração nos valores dos seus atributos, que ele retorne um List com quais atributos foram alterados. Explicando: na realidade esses objetos são dois registros carregados pelo hibernate, a idéia é comparar quais foram as alterações feitas para o registro atual. Isso seria utilizado como interesse sistêmico, provavelmente eu pegaria cada estado do objeto usando AspectJ posteriormente.

Mas queria usar al go simples, sem escrever um método de comparação para cada entidade, até pq algumas tabelas tem muitos campos e ficaria difícil de escrever todas. A interface comparable é boa para comparações com retorno booleano simples, mas naum retorna quais atributos ou algo assim e o comparator fica nakle esquema de -1,0,1

Se eu achar uma forma antes, posto aki para o pessoal

grato,

Já tentou usar reflection?

Use reflection, passanda a classe a ser comparanda como parametro. Aí vc pega os tos os campos da classe e os compara via equals. Única coisa q os atributos deverão implementar o equals. Mas se não fizer isso, vc pode usar a classe recursivamente, comparando os atributos das classes que nao implementarem o equals. Aí basta vc colocar as diferenças em uma lista e usar essa lista. Um amigo fez coisa parecida aqui na facu, vou ver se encontro aqui…

Toma aí o jar. Vc utiliza instacia a classe Comparator passando a classe que vc deseja comparar como parâmetro.
Depois vc compara os objetos de classe como desejar, usando os método startCompare. Com o método getDifferenceList, vc pega a classe desejada.
Segue o Jar e código fonte.