Типы данных объекта должны быть такими же, как param в репозитории JPA? - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь использовать JPA Repository для получения данных из моей базы данных.Здесь я хочу получить все MyObject между startdate и enddate.

Код

Репозиторий

@GetMapping
List<Tache> getMyObjectsByStartdateAfterAndEnddateBefore(@RequestParam Date startdate,
                                                         @RequestParam Date enddate);

Контроллер

@GetMapping(params = {"startdate", "enddate"})
public ResponseEntity<?> findAllByStartdateAfterAndEnddateBefore(@RequestParam("startdate") String startdate,
                                                                 @RequestParam("enddate") String enddate) throws ParseException {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date start = formatter.parse(startdate);
    Date end = formatter.parse(enddate);
    return new ResponseEntity<>(this.tacheResource.getMyObjectsByStartdateAfterAndEnddateBefore(start, end), HttpStatus.OK);
}

Объект

@Entity
public class MyObject {

    @Id
    private String id;
    @ColumnDefault("CURDATE()")
    private String startdate;
    private String enddate;
    ...
}

Пример запроса GET

http://localhost:8082/myobject/?startdate=2019-02-19&enddate=2019-06-01

Ошибка (в репозиторий)

Ожидаемые типы параметров: Строка , Строка

Однако я не понимаю почему, потому что я определил метод с типом Date в качестве параметра.Это потому, что даты хранятся как String в моей сущности?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Для типов объектов Entity datedate и enddate должны быть также Date, чтобы получить объекты с параметрами даты

@Entity
public class MyObject {

   @Id
   private String id;

   @ColumnDefault("CURDATE()")
   private Date startdate;
   private Date enddate;
   ...

}
0 голосов
/ 23 февраля 2019

Это всегда должно совпадать между параметрами метода jpa и типом полей вашего класса.В вашем случае, если MyObject имеет поля String (startDate и endDate), метод jpa должен получить параметр String.Для вашего конкретного примера кажется более естественным иметь ваш класс MyObject с полями Date вместо String:

@Entity
public class MyObject {

   @Id
   private String id;
   @ColumnDefault("CURDATE()")
   private Date startdate;
   private Date enddate;
   ...
}

Таким образом, вы сможете передавать объекты Date в качестве параметров в ваш метод JPA.

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