Пытаюсь сохранить значение с помощью jpa. Я получил SQLIntegrityConstraintViolationException.
Мой класс модели - (user_answers) Таблица:
import org.hibernate.annotations.Type
import java.io.Serializable
import java.util.*
import javax.persistence.Column
import javax.persistence.Entity
import javax.persistence.Id
import javax.persistence.Table
@Entity
@Table(name = "user_answers")
data class CustomUserAnswer (
@Id
@Type(type = "uuid-char")
@Column(name = "id")
var id: UUID = UUID.randomUUID(),
@Column(name="answer")
var answer: String = "",
@Type(type = "uuid-char")
@Column(name = "user_answer_id")
var userAnswerId: UUID,
@Column(name = "question_id")
var questionId: UUID):Serializable{}
Мой класс модели - (user_answer_relt)
import org.hibernate.annotations.Type
import java.util.*
import javax.persistence.*
@Entity
@Table(name = "user_answer_relt")
data class UserAnswerRelt(
@Id
@Type(type = "uuid-char")
@Column(name = "id")
var id: UUID = UUID.randomUUID(),
@Column(name="answer_submitted_by")
var submittedUserName : String = "",
@Type(type = "uuid-char")
@Column(name="user_id")
var userId : UUID
) {}
Сначала я сохраняю значения User_Answer_Relt и получаю User_Answer_Id Затем я создаю класс User_Answer с User_Answer_Id
Итак, теперь я пытаюсь сохранить значение User_Answer, на этот раз я получаю следующую проблему.
Ошибка:
> 19:49:43.079 [http-nio-9010-exec-1] ERROR
> o.h.e.jdbc.spi.SqlExceptionHelper - Cannot add or update a child row:
> a foreign key constraint fails (`test`.`user_answers`, CONSTRAINT
> `user_question_id_fk` FOREIGN KEY (`question_id`) REFERENCES
> `questions` (`id`)) 19:49:43.129 [http-nio-9010-exec-1] ERROR
> o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet
> [dispatcherServlet] in context with path [] threw exception [Request
> processing failed; nested exception is
> org.springframework.dao.DataIntegrityViolationException: could not
> execute statement; SQL [n/a]; constraint [null]; nested exception is
> org.hibernate.exception.ConstraintViolationException: could not
> execute statement] with root cause
> java.sql.SQLIntegrityConstraintViolationException: Cannot add or
> update a child row: a foreign key constraint fails
> (`test`.`user_answers`, CONSTRAINT `user_question_id_fk` FOREIGN KEY
> (`question_id`) REFERENCES `questions` (`id`))
Я знаю Если Question_Id недоступен в таблице вопросов, это означает, что он генерирует указанное выше исключение, но я дважды проверил правильность данных. но я не знаю точной причины.
Я также пробовал столбец соединения в модели, но у меня все еще та же проблема
import org.hibernate.annotations.Type
import java.util.*
import javax.persistence.*
@Entity
@Table(name = "user_answers")
data class UserAnswer(
@Id
@Type(type = "uuid-char")
@Column(name = "id")
var id: UUID = UUID.randomUUID(),
@Column(name="answer")
var answer: String = "",
@Type(type = "uuid-char")
@Column(name = "user_answer_id")
var userAnswerId: UUID,
@Column(name = "question_id")
var questionId:UUID,
@ManyToOne(fetch = FetchType.LAZY,cascade = arrayOf(CascadeType.ALL))
@JoinColumn(name = "question_id",insertable = false,updatable = false)
var question: Question?
){}