gpt4 book ai didi

java - 由于@OneToMany,JPA 更新记录失败

转载 作者:行者123 更新时间:2023-12-02 10:23:18 27 4
gpt4 key购买 nike

我对 @OneToMany 映射有一个很小的疑问。

我有一个模范学生和另一个模范出勤者。

一名学生可以多次出勤。但学生模型应该只能检索出勤信息。

但是当我尝试更改一些学生信息时,我收到以下错误,因为它正在尝试更新出勤记录。

这是我的映射

@Entity
@Table(name="student_detail")
@Getter @Setter
public class StudentDetailsModel {

@Id
@Column(name="reg_no",updatable = false, nullable = false)
private String regNo;

@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
@JoinColumn(name = "reg_no")
private List<AttendanceModel> attendances;
}

我得到了异常(exception)。

    update
student_detail
set
address=?,
alt_contact_number=?,
blood_group=?,
contact_number=?,
dob=?,
father_name=?,
first_name=?,
gender=?,
last_name=?,
middle_name=?,
mother_name=?,
photo_url=?,
school_id=?
where
reg_no=?
Hibernate:
update
attendance
set
reg_no=null
where
reg_no=?
2019-01-13 12:12:52.922 WARN 10708 --- [nio-8081-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 23502
2019-01-13 12:12:52.923 ERROR 10708 --- [nio-8081-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: null value in column "reg_no" violates not-null constraint
Detail: Failing row contains (null, 1, 2019-01-05, t, 2).
2019-01-13 12:12:52.926 INFO 10708 --- [nio-8081-exec-1] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [reg_no]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement

我的出勤模型如下

@Entity
@Table(name="attendance")
@Getter @Setter
public class AttendanceModel {

//@EmbeddedId
//private AttendanceId attendanceId;

@Id
@Column(name="attendance_id")
private long id;


@Column(name="reg_no")
private String regNo;

@Column(name="subject_id")
private long subjectId;

@Column(name="class_date")
private Date classDate;


@Column(name="present")
private boolean present;
}

最佳答案

你能给我看一下学生模型吗?如果我看看你的代码帖子:你使用单向关系。

我认为必须:

@OneToMany(fetch = FetchType.LAZY , cascade = CascedeType.ALL)
@JoinColumn(name="attendance_id")
private List<AttendanceModel> attendances = new ArrayList<>();

关于java - 由于@OneToMany,JPA 更新记录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54166756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com