У меня есть класс сущности:
@Entity
@Table(name = "meals")
public class Meal extends AbstractNamedEntity implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "Price must be added")
private Integer price;
@JsonIgnore
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate date = LocalDate.now();
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "restaurant_id", nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
private Restaurant restaurant;
public Meal() {
}
//getters and setters
}
Когда я тестирую свои контроллеры с тестовыми данными:
public class MealTestData {
private static final Integer START_SEQ = 100000;
public static final Meal MEAL_1 = new Meal(START_SEQ + 6, "ChickenBurger set", 300, RESTAURANT_1);
public static final Meal MEAL_2 = new Meal(START_SEQ + 7, "CheeseBurger set", 400, RESTAURANT_1);
public static final Meal MEAL_3 = new Meal(START_SEQ + 8, "FishBurger set", 500, RESTAURANT_1);
}
Я получаю это исключение:
java .lang.IllegalArgumentException: недопустимый массив чтения из JSON: '[{"id": 100006, "name": "ChickenBurger set", "price": 300, "date": "2020- 01-26 "}, {" id ": 100007," name ":" CheeseBurger set "," price ": 400," date ":" 2020-01-26 "}, {" id ": 100008," name ":" FishBurger set "," price ": 500," date ":" 2020-01-26 "}] ';
Причина: com.faster xml .jackson.databind.ex c .UnrecognizedPropertyException: нераспознанное поле «дата» (класс ru.top java .graduation.model.Meal), не помеченное как игнорируемое (3 известных свойства: «цена», «идентификатор», «имя»]) в [ Источник: (String) "[{" id ": 100006," name ":" ChickenBurger set "," price ": 300," date ":" 2020-01-26 "}, {" id ": 100007," name ":" CheeseBurger set "," price ": 400," date ":" 2020-01-26 "}, {" id ": 100008," name ":" FishBurger set "," price ": 500," дата ":" 2020-01-26 "}]"; строка: 1, столбец: 62] (через цепочку ссылок: ru.top java .graduation.model.Meal ["date"])
В чем причина и как ее исправить? Я не могу игнорировать это поле в моих тестах
И получатель, и установщик для поля "дата" представлены:
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}