У меня следующая проблема.
Вот мой Accident класс и CommonDomainEntity класс:
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Accident extends CommonDomainObject {
private String status;
private Date accidentDate;
private String name;
}
@Data
public abstract class CommonDomainObject {
public Long id;
public boolean isNew() {
return null == getId();
}
}
В моем тестовом классе я вызываю следующее:
String exp = objMapper.writeValueAsString(accidents);
System.out.println(exp);
ResponseEntity<String> res = restTemplate.getForEntity("/accidents", String.class);
assertEquals(HttpStatus.OK, res.getStatusCode());
JSONAssert.assertEquals(exp, res.getBody(), false);
Выдает следующую ошибку:
java.lang.AssertionError: [id=2]
Expected: new
but none found
; [id=3]
Expected: new
but none found
Я уже пытался распечатать объект exp, чтобы увидеть, что в нем, а также пытался распечатать чтоs inаварии`.
Как видно в логах консоли почему-то в объекте exp есть поле new=false, и я не могу понять, откуда оно.
Вот это то, что в моем списке несчастных случаев
Accident(status=pending, accidentDate=null, name=Name),
Accident(status=closed, accidentDate=null, name=Name)]
А это мой объект exp в формате JSON
[{"id":2,"status":"pending","accidentDate":null,"name":"Name","new":false},
{"id":3,"status":"closed","accidentDate":null,"name":"Name","new":false}]




Ваш метод CommonDomainObject.isNew() в абстрактном классе оценивается ObjectMapper как поле JSON. Вы должны исключить его, используя аннотации Джексона.
public abstract class CommonDomainObject {
...
@JsonIgnore
public boolean isNew() {
return null == getId();
}
}
Видеть:
Ваш MCVE будет:
objMapper.writeValueAsString()newВесь остальной код является избыточным для воспроизведения вашей проблемы :)
Большое спасибо !!! Это решило проблему. Огромное спасибо ! Я два дня с ума сходил :)
Я только что обновил сообщение, надеюсь, теперь все в порядке :) Спасибо за ваши исчерпывающие ответы и ваше время, чтобы исправить мою проблему.
есть ли у Accident другое поле, которое не является частью конструктора? что на самом деле возвращает остальная служба? есть ли «новое» поле в возвращаемом json?