JdbcSQLIntegrityConstraintViolationException: поле не может быть пустым "QUESTIONS_QUESTION_ID" - PullRequest
0 голосов
/ 04 апреля 2020

Я разрабатываю свое первое весеннее загрузочное приложение с базой данных. Я стремлюсь создать анкетный сервис. После добавления объекта ответа / вопроса я получаю ошибку при отправке json в приложение.

org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Field cannot be NULL QUESTIONS_QUESTION_ID NULL not allowed for column QUESTIONS_QUESTION_ID

Это мои классы моделей для базы данных

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity(name = "Survey")
@Table(name = "survey")
//@SecondaryTable(name = "question")
public class Survey{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "survey_Id")
    private int surveyId;

    @Column(name = "survey_Name")
    private String surveyName;

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinTable(name ="question", joinColumns = {@JoinColumn(name = "surveyOrigin")})
    private List<Question> questions = new ArrayList<Question>();

    public Survey(){}

    //Getter and Setter..
}
import javax.persistence.*;
import java.util.List;

@Entity(name = "Question")
@Table(name = "question")
@SecondaryTable(name = "answer")
public class Question{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int questionId;

    @Column(name="surveyOrigin")
    private int surveyOrigin;
    @Column(name="question")
    private String question;

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinTable(name ="answer", joinColumns = {@JoinColumn(name = "questionOrigin")})
    private List<Answer> answers;

    public Question(){}

    //Getter and Setter..
}
import javax.persistence.*;

@Entity(name= "Answer")
@Table(name = "answer")
public class Answer{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int answerId;

    @Column(name = "questionOrigin")
    private int questionOrigin;
    private String answer;

    public Answer(){}

    //Getter and Setter..
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import pl.surveyapplication.model.Survey;
import pl.surveyapplication.repository.SurveyRepository;

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

@Component
public class SurveyService {

    @Autowired
    private SurveyRepository surveyRepository;

    private List<Survey> surveyList = new CopyOnWriteArrayList<>();

    public Survey addSurvey(Survey survey){
        return surveyRepository.save(survey);
    }

    public List<Survey> getSurveys(){
        return surveyRepository.findAll();
    }

    public Survey getSurvey(int surveyId){
        return surveyList
                .stream()
                .filter(s -> s.getSurveyId() == surveyId)
                .findFirst()
                .get();
    }

    public Survey updateSurvey(int surveyId, Survey survey){
        surveyList
                .stream()
                .forEach(s -> {
                    if(s.getSurveyId() == surveyId){
                        s.setSurveyName(survey.getSurveyName());
                        s.setQuestions(survey.getQuestions());
                    }
                });
        return surveyList
                .stream()
                .filter(s -> s.getSurveyId() == surveyId)
                .findFirst()
                .get();
    }

    public void deleteSurvey(int surveyId){
        surveyList
        .stream()
        .forEach(s -> {
            if(s.getSurveyId() == surveyId){
                surveyList.remove(s);
            }
        });
    }

}

Я попал в слепую точку в этой точке. Я знаю, что эта ошибка связана с моей ошибкой в ​​отношениях, потому что, если я прокомментирую все, кроме идентификатора и имени опроса (без вопросов и ответов), он будет работать правильно.

Я проверил связанные темы, и это не помогло мне решить мою проблему.

У вас есть идеи, что случилось?

Заранее спасибо:)

...