Я разрабатываю свое первое весеннее загрузочное приложение с базой данных. Я стремлюсь создать анкетный сервис. После добавления объекта ответа / вопроса я получаю ошибку при отправке 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);
}
});
}
}
Я попал в слепую точку в этой точке. Я знаю, что эта ошибка связана с моей ошибкой в отношениях, потому что, если я прокомментирую все, кроме идентификатора и имени опроса (без вопросов и ответов), он будет работать правильно.
Я проверил связанные темы, и это не помогло мне решить мою проблему.
У вас есть идеи, что случилось?
Заранее спасибо:)