【发布时间】:2020-09-12 05:41:05
【问题描述】:
我正在尝试使用 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_Id 构建 User_Answer 类
所以,现在我正在尝试保存 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?
){}
【问题讨论】:
标签: java spring-boot kotlin spring-data-jpa