Попытка отфильтровать с использованием даты в сервисе spring -boot olin go odatav2, но появляется ошибка грегорианского календаря - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь выполнить такой запрос фильтра

<Service>/odata/InspectionValidations?$filter=DateAssigned gt datetime'2020-07-23T00:00:00'

, но я получаю

java.util.GregorianCalendar cannot be cast to java.util.Date

In Фактически, примерно год назад есть похожий вопрос go, на который нет ответа, поэтому я собираюсь опубликовать новый. Я предполагаю, что мне нужно какое-то преобразование? Или я объявил объект DateAssigned неправильным? В этом случае я использовал java .util.Date, но изменение его на java. sql .Date приводит к той же ошибке, поскольку sql .Date - это просто подкласс util.Date.

package gov.doe.app.domain;

import java.util.Date;
//import java.sql.Date;
import java.time.LocalDateTime;
import java.util.GregorianCalendar;
import com.fasterxml.jackson.annotation.JsonFormat;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.persistence.SequenceGenerator;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
@Table(name = "inspection_validation")
public class InspectionValidation {
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, 
    generator = "inspection_validation_id_seq")
    @SequenceGenerator(name = "inspection_validation_id_seq", 
    sequenceName = "seq_inspection_validation", allocationSize = 1)
    @Column(name = "id")
    @NotNull
    private Long id;

    @Column(name = "version")
    @NotNull
    private Long version;

    @Column(name = "is_active")
    @NotNull
    private Boolean isActive;

    //@Column(name = "assigned_by")
    //private Long assignedBy;

    @ManyToOne
    @JoinColumn(name = "assigned_by", referencedColumnName = "id")
    private AdminAccount assignedBy;

    @Column(name = "assigned_remarks")
    private String assignedRemarks;

    @Column(name = "assignment_no")
    @NotNull
    private String assignmentNumber;

    @Column(name = "contact_no")
    private String contactNumber;

    //@Column(name = "current_evaluator")
    //private Long currentEvaluator;

    @ManyToOne
    @JoinColumn(name = "current_evaluator", referencedColumnName = "id")
    private AdminAccount currentEvaluator;

    @Column(name = "date_assigned")
    private Date dateAssigned;

    @Column(name = "evaluation_remarks")
    private String evaluationRemarks;
}

Я использую ODataJPAServiceFactory для обработки части Odata.

1 Ответ

0 голосов
/ 23 августа 2020

Решением было бы определить данные в определении объекта с помощью java.sql.Date.

Вы также можете принять решение использовать один из следующих SQL типов данных в соответствии с вашими потребностями

DATE для сохранения даты без информации о времени

TIME для сохранения времени без даты и

TIMESTAMP для хранения информации о дате и времени.

...