Как через postman отправить дату и сохранить в базе данных?
Хочу через Postman сделать запрос и принять в методе, который ниже представлен. Выскакивает ошибка, как понимаю, связана с тем, что неправильно обрабатываю дату. Вопрос: как мне через postman отослать дату и корректно её сохранить в базе данных?
Логи в IDEA и Postman:
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.time.LocalDate` from String "23/02/2020": Failed to deserialize java.time.LocalDate: (java.time.format.DateTimeParseException) Text '23/02/2020' could not be parsed at index 0; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDate` from String "23/02/2020": Failed to deserialize java.time.LocalDate: (java.time.format.DateTimeParseException) Text '23/02/2020' could not be parsed at index 0
at [Source: (PushbackInputStream); line: 2, column: 20] (through reference chain: task.homerent.model.Contract["start_date"])]
Вот так выглядит запрос:
{
"start_date" : "23/02/2020",
"end_date" : "27/02/2020",
"id_house" : 2,
"id_tenant" : 2
}
Код:
@PostMapping("/rent")
@PreAuthorize("hasAuthority('user:write')")
public void homeRent(@RequestBody House house) {
System.out.println("ID арендатора");
System.out.println(house.getId_tenant());
System.out.println("Начало аренды");
int dates = Integer.valueOf(String.valueOf(house.getStart_date()));
LocalDate date = new LocalDate(dates); - высвечивается ошибка LocalDate(int, int, int) has private access in 'java.time.LocalDate'`
System.out.println(date);
}
Contract
@Data
@Entity
@Table(name = "contract", schema = "public")
public class Contract {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne
@JoinColumn(name = "id_house")
@ToString.Exclude
@EqualsAndHashCode.Exclude
@JsonIgnore
private House house;
@ManyToOne
@JoinColumn(name = "id_tenant")
@EqualsAndHashCode.Exclude
@ToString.Exclude
@JsonIgnore
private User user;
@Column(name = "end_date")
private LocalDate end_date;
@Column(name = "start_date")
private LocalDate start_date;
}
Ответы (2 шт):
Подключаем зависимость в pom.xml файл:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.6.0</version>
</dependency>
Раздел predefined formatters https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
Формат даты идёт по ISO, yyyy-MM-dd
На примере моего запроса:
{
"start_date" : "2020-03-12",
"end_date" : "2020-03-19",
"id_house" : 2,
"id_tenant" : 3
}
Почитайте тут, мне помогло в моё время https://medium.com/@KucherDev/%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-vue-js-41156e36bfc9