Данные Spring не возвращают уникальные объекты для нескольких уникальных строк - PullRequest
0 голосов
/ 18 декабря 2018

Итак, история этой проблемы: я создал календарь событий, который позволяет событиям длиться несколько дней.В моей БД у меня есть таблица для события, и у меня есть таблица с именем event_dates, которая представляет собой только event_id и дату.

Чтобы получить строки правильно с датами события, я делаю INNER JOIN on EVENT_DATES (event_id)

Возвращение из БД правильное, строка содержит всю информацию о событии вместе со столбцом «дата», прикрепленным в конце.

Мой домен для класса событий:

@Data
@Entity
@Table(name="events")
@SecondaryTable(name = "event_date", pkJoinColumns=@PrimaryKeyJoinColumn(name="event_id", referencedColumnName="event_id"))
@RequiredArgsConstructor
public class Event {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="event_id")
    private Long id;

    private String eventTitle;
    private String eventCategory;
    private String eventType;


    @Column(table="event_date", name="date", columnDefinition = "DATE", unique=true)
    private LocalDate date;

    @Column(table="event_date", name="event_date_id")
    private Long eventDateId;

    private boolean allDayEvent;

    @Column(name = "start_time", columnDefinition = "TIME")
    private LocalTime startTime;

    @Column(name = "end_time", columnDefinition = "TIME")
    private LocalTime endTime;

    private String timezone;
    private boolean onlineEvent;
    private String city;
    private String state;
    private String country;
    private String language;
    private String description;
    private boolean register;
    private String registrationLink;
    private boolean multiDay;

}

Здесь возникает проблема:

Пока БД возвращает каждую строку вместе с правильными датами (без повторяющихся дней),

весенние данные создают первую строку как сущность с первой датой, но затем, когда она попадает в следующую строку, она видит, что идентификатор события совпадает с предыдущей сущностью, и просто копируетэта сущность снова в массиве, она никогда не проверяет, является ли дата уникальной для этой сущности.Даты никогда не меняются, и важно, чтобы это происходило, или мой API возвращает события, происходящие снова и снова в один и тот же день (правильное количество дубликатов, однако, ха-ха).

Таким образом, возвращаемое значение из пружины - это правильное количество записей, но даты для каждого объекта остаются неизменными, потому что он не проверяет, являются ли поля event_id и date уникальными для каждого объекта, добавляемого в массив возвращаемых результатов..

Я видел использование @UniqueConstraint, но проблема в том, что @UniqueConstraint s охватывают две таблицы, а не одну и ту же таблицу, и я не нашел примеров, показывающих, как настроить ситуацию такого типа,

Я там на 95%, мне просто нужны даты, чтобы каждая сущность была уникальной!

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