В разработке RESTful API как получить дату форматирования JSON и преобразовать ее в Java Date для поиска в базе данных по дате получения - PullRequest
0 голосов
/ 26 июня 2019

Я разрабатываю RESTful API с использованием Spring, в котором некоторые таблицы, в которых я храню данные с датой его создания / или датой других операций.

Вот поле даты в классе модели:

@Column(name = "log_creation_date")
@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss", timezone="MSK")
private Date creationDate;//Date is from java.util

При сохранении объекта в базе данных я передаю текущую дату со следующим кодом:

//set the date
Date logCreationDate = new Date(); //Date is from java.util
clientLog.setCreationDate(logCreationDate);

Я успешно сохраняю данные с датой создания в базе данных.Вот скриншот того, как хранящиеся данные выглядят в базе данных.Я использую базу данных PostgreSQL.

enter image description here

Теперь приходит мой вопрос.Теперь мне нужно выполнить поиск клиентского запроса или других данных по дате из этой базы данных (например, по дате создания или дате последней активности, которая также хранится в другой таблице).Сначала клиент получит список дат создания, затем он / она может использовать дату создания или другую дату для извлечения данных из базы данных.

Вот как клиент получит объект с другим списком дат действия создания:

enter image description here

Теперь клиент отправит нужную дату в формате JSON для извлечения данных из базы данных.

У меня возникли проблемы с получением и анализом данных.Сначала я подумал, что просто буду использовать объект RequestMapping типа Date (из пакета утилит java).Затем я запутался, поскольку пакет утилит Date from Java является встроенным классом и как его создавать.Затем я создал новый класс сущностей, в котором будет одно поле с датой, т. Е. Класс DataEntity, и клиент создаст объект класса DataEntity, где он / она передаст значение Date в указанном формате.

Здеськак будет выглядеть класс DataEntity:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable; 
import java.util.Date;

@lombok.Data
public class DataEntity implements Serializable {

        @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss")
           private Date date;
        }

И клиент будет отправлять так:

{
  "date": "2019-06-26 11:24:55"
}

Я не могу проанализировать эту дату в Java Util Date в необходимом формате, чтобыего можно использовать как объект данных (утилита Java) для извлечения данных из базы данных, так как в классе сущностей даты создания или других действий указаны в типе даты Java utilЕсть и другая проблема.В моей базе данных дата сохраняется с миллисекундами, когда клиент получает данные без миллисекунд.Эту разницу можно увидеть в образе базы данных и в списке принимаемых данных пользователя.

После двух дней попыток решить проблему с различными усилиями я не смог добиться успеха.Я также пытался получить дату от клиента как формат строки, а затем с помощью SimpleDateFormat форматировать дату до необходимого формата (мне нужен формат «гггг-ММ-дд чч: мм: сс» для сопоставления) и извлечь данные из базы данных.Позже я попытался изменить тип даты в классе модели, заменив Java utill Date на Java 8's LocalDateTime, но тщетно.Я также пытался использовать joda-time, но не смог решить мою проблему.

Моя главная проблема заключается в том, чтобы разобрать полученную отформатированную JSON дату в необходимый объект Date формата, который будет совпадать с датой базы данных.

Я ищу помощи, как мне получить дату от клиента и проанализировать ее для java util Date объекта в нужном формате, чтобы он использовался для извлечения данных из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...