After recent fix #795 , DiffIgnore on the method stopped working for a set of ValueObjects having a set of ValueObjects. It is expected that for MappingStyle = BEAN, DiffIgnore should be on the method rather than field.
If I set DiffIgnore on getNumber() method, javers is finding differences. But if I add DiffIgnore on the field "number", javers is not finding differences (which is expected).
Expected result: DiffIgnore on the method getNumber() should work and no differences should be found.
It looks like it stopped working since v 5.2.5.
Here is the code:
`import org.javers.core.Javers;
import org.javers.core.JaversBuilder;
import org.javers.core.MappingStyle;
import org.javers.core.diff.Diff;
import org.javers.core.diff.ListCompareAlgorithm;
import org.javers.core.metamodel.annotation.DiffIgnore;
import org.javers.core.metamodel.annotation.Id;
import java.util.*;
public class Test {
private final static Javers differ = JaversBuilder.javers()
.withListCompareAlgorithm(ListCompareAlgorithm.LEVENSHTEIN_DISTANCE)
.withMappingStyle(MappingStyle.BEAN)
.build();
public static class Building {
private Integer id;
private Set<Floor> floors;
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Set<Floor> getFloors() {
return floors;
}
public void setFloors(Set<Floor> floors) {
this.floors = floors;
}
}
public static class Floor {
private Set<Room> rooms;
public Set<Room> getRooms() {
return rooms;
}
public void setRooms(Set<Room> rooms) {
this.rooms = rooms;
}
}
public static class Room {
private String name;
private String number;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@DiffIgnore
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
public static void main(String[] args) {
Building building1 = new Building();
building1.setId(1);
Room room1 = new Room();
room1.setName("Room!");
room1.setNumber("Ignore me");
Floor floor1 = new Floor();
floor1.setRooms(Collections.singleton(room1));
building1.setFloors(Collections.singleton(floor1));
Building building2 = new Building();
building2.setId(1);
Room room2 = new Room();
room2.setName("Room!");
room2.setNumber("Different room");
Floor floor2 = new Floor();
floor2.setRooms(Collections.singleton(room2));
building2.setFloors(Collections.singleton(floor2));
Diff diff = differ.compare(building1, building2);
System.out.println(diff.getChanges().size());
}
}`
After recent fix #795 , DiffIgnore on the method stopped working for a set of ValueObjects having a set of ValueObjects. It is expected that for MappingStyle = BEAN, DiffIgnore should be on the method rather than field.
If I set DiffIgnore on getNumber() method, javers is finding differences. But if I add DiffIgnore on the field "number", javers is not finding differences (which is expected).
Expected result: DiffIgnore on the method getNumber() should work and no differences should be found.
It looks like it stopped working since v 5.2.5.
Here is the code:
`import org.javers.core.Javers;
import org.javers.core.JaversBuilder;
import org.javers.core.MappingStyle;
import org.javers.core.diff.Diff;
import org.javers.core.diff.ListCompareAlgorithm;
import org.javers.core.metamodel.annotation.DiffIgnore;
import org.javers.core.metamodel.annotation.Id;
import java.util.*;
public class Test {
private final static Javers differ = JaversBuilder.javers()
.withListCompareAlgorithm(ListCompareAlgorithm.LEVENSHTEIN_DISTANCE)
.withMappingStyle(MappingStyle.BEAN)
.build();
}`