Нулевое значение в столбце «object_service_id» нарушает ненулевое ограничение - PullRequest
0 голосов
/ 02 апреля 2019
objectServiceRepository.save(objectService);

        if (request.getObjectServiceJobs() != null) {
            if (objectService.getObjectServiceJobs() != null) {
                objectService.getObjectServiceJobs().forEach(job -> {
                    objectServiceJobRepository.delete(job);
                });
            }
            List<ObjectServiceJob> objectServiceJobs = new ArrayList<>();
            request.getObjectServiceJobs().forEach(serviceJob -> {
                ObjectServiceJob objectServiceJob = new ObjectServiceJob();
                objectServiceJob.setObjectService(objectService);
                objectServiceJob.setJob(serviceJob.getJob());
                objectServiceJob.setWorkDetail(serviceJob.getWorkDetail());
                objectServiceJobRepository.save(objectServiceJob);
            });
            objectService.setObjectServiceJobs(objectServiceJobs);
        }

return objectServiceRepository.save(objectService);

Я получаю ошибку ограничения только при редактировании ObjectService.При добавлении нового все работает нормально.

ERROR: null value in column "object_service_id" violates not-null constraint
Detail: Failing row contains (16, null, 1, 1).

В части «Подробности» я предполагаю, что у него есть проблемы с установкой ObjectService в ObjectServiceJob.При добавлении нового ObjectService я использую:

public ObjectService createObjectService(PatchObjectServiceRequest request){
        return this.setObjectServiceData(request, new ObjectService());
    }

При изменении ObjectService я использую:

public ObjectService modifyObjectService(PatchObjectServiceRequest request, Long id){
        return this.setObjectServiceData(request, getObjectServiceById(id));
    }

Странно то, что изменения проходят, но я все еще получаю код 500ошибка.

Объект ObjectService:

@Entity
@Getter
@Setter
@Table(name = "object_service")
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="id")
public class ObjectService {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(unique = true, nullable = false, columnDefinition = "serial")
    private Long id;

    @Column(name = "size")
    private int size;

    @Column(name = "est_time_in_min")
    private int estTimeInMinutes;

    @Column(name = "requierment")
    private int requierment;

    @Column(name = "note")
    private String note;

    @Column(name = "on_holidays")
    private boolean onHolidays;

    @Column(name = "is_billable")
    private boolean isBillable;

    @Column(name = "done_weekly")
    private boolean doneWeekly;

    @Column(name = "status", nullable = false, columnDefinition = "active_status")
    @Enumerated(EnumType.STRING)
    @Type(type = "pgsql_enum")
    private User.UserStatus status;

    @ManyToOne
    @JoinColumn(name = "object_id", nullable = false)
    private Object object;

    @ManyToOne
    @JoinColumn(name = "service_id", nullable = false)
    private Service service;

    @OneToMany
    @JoinColumn(name = "object_service_id")
    private List<ObjectServiceJob> objectServiceJobs;

    @ManyToOne
    @JoinColumn(name = "day_schedule_id")
    private DaySchedule daySchedule;

    @ManyToOne
    @JoinColumn(name = "week_schedule_id")
    private WeekSchedule weekSchedule;

    @Column(name = "create_time", nullable = false, updatable = false)
    @JsonIgnore
    private Date createTime = new Date();

    @Column(name = "update_time", nullable = false)
    @JsonIgnore
    private Date updateTime = new Date();

    @PreUpdate
    @PrePersist
    public void onCreateOnUpdate() {
        updateTime = new Date();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...