Я не уверен, что это проблема с тем, как Hibernate или Spring Data понимают мой ввод. В своем проекте на бэкэнде я использую Java + Spring Data + Hibernate + PostgreSQL.
Моя проблема заключается в том, что когда я пытаюсь сохранить в базе данных объект Java, который содержит массив с элементами, я получаю сообщение об ошибке из своей базы данных PostgreSQL:
org. postgresql .util. PSQLException: ОШИБКА: нулевое значение в столбце «free_timeslots» нарушает ненулевое ограничение
Я действительно не понимаю, что здесь происходит, поскольку из того, что я вижу в отладчике, я предоставляю правильный объект для хранилище (JpaRepository, которое выглядит так:
import com.ap.personalassistant.model.DayTimeSlots;
import org.springframework.data.jpa.repository.JpaRepository;
public interface DayTimeSlotsRepository extends JpaRepository<DayTimeSlots, Long> {
}
)
Объект, который я предоставляю:
DayTimeSlots класс это выглядит так:
import com.ap.personalassistant.dto.DayTimeSlotsDto;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDate;
import java.util.List;
@Data
@Entity
@Table(name = "day_timeslots")
public class DayTimeSlots {
@Id
@Setter(AccessLevel.NONE)
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
private LocalDate date;
@Column(name = "free_timeslots")
@ElementCollection
private List<Long> freeTimeSlotsIds; // possible from 62 to 109
public DayTimeSlots() {
}
public DayTimeSlots(DayTimeSlotsDto dayTimeSlotsDto) {
this.id = dayTimeSlotsDto.getId();
this.date = dayTimeSlotsDto.getDate();
this.freeTimeSlotsIds = dayTimeSlotsDto.getFreeTimeSlotsIds();
}
}
И в базе данных у меня есть таблица с именем day_timeslots со следующими столбцами:
- id (bigint)
- дата (дата)
- free_timeslots (bigint [])
Может ли кто-нибудь помочь мне с этим? Я искал в inte rnet ответы, но пока ничего не получалось.