保存成功但更新失败-使用Jointable的ManytoManySpringJPA增加额外列
创始人
2024-11-22 06:30:18
0

这个问题通常是由于使用JPA中的@JoinTable注释创建了一个中间表,以便处理多对多关系并增加了额外的列。在保存实体时,添加的额外列被正确设置,但当更新实体时,这些列没有被更新。这是因为JPA不会自动更新中间表的列。

为了解决这个问题,可以使用@PreUpdate注释在更新前手动更新中间表的列。下面是一个具有额外列的Many to Many关系并使用Jointable的代码示例:

@Entity public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

private String name;

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "student_course",
    joinColumns = @JoinColumn(name = "student_id"),
    inverseJoinColumns = @JoinColumn(name = "course_id"))
private Set courses = new HashSet<>();

@OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
private Set studentCourses = new HashSet<>();

// Constructors, getters, and setters

}

@Entity public class Course { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

private String name;

@ManyToMany(mappedBy = "courses")
private Set students = new HashSet<>();

// Constructors, getters, and setters

}

@Entity public class StudentCourse { @EmbeddedId private StudentCourseId id;

@ManyToOne
@MapsId("studentId")
private Student student;

@ManyToOne
@MapsId("courseId")
private Course course;

private int grade;

// Constructors, getters, and setters

}

@Embeddable public class StudentCourseId implements Serializable {

@Column(name = "student_id")
private Long studentId;

@Column(name = "course_id")
private Long courseId;

// Constructors, getters, and setters

}

在StudentCourse实体中,我们添加了一个额外的列名为'grade”。为了确保在更新StudentCourse实体时额外列的值也得到更新,我们在StudentCourse实体中添加了一个@PreUpdate方法。

@Entity public class StudentCourse { @EmbeddedId private StudentCourseId id;

@ManyToOne
@MapsId("studentId")
private Student student;

@ManyToOne
@MapsId("courseId")
private Course course;

private int grade;

// Constructors, getters, and

相关内容

热门资讯

第9分钟了解!家乡大二辅助!竟... 第9分钟了解!家乡大二辅助!竟然真的有辅助软件(新版有挂)-哔哩哔哩1、不需要AI权限,帮助你快速的...
1分钟了解!蜀山四川智能辅助插... 1分钟了解!蜀山四川智能辅助插件下载!总是一直总是有辅助神器(讲解有挂)-哔哩哔哩1)蜀山四川智能辅...
第7分钟了解!新超凡大厅怎么开... 第7分钟了解!新超凡大厅怎么开挂!确实存在有辅助教程(有挂透明挂)-哔哩哔哩1)新超凡大厅怎么开挂免...
第2分钟了解!掌上程序辅助器下... 第2分钟了解!掌上程序辅助器下载!本来真的是有辅助技巧(有挂解密)-哔哩哔哩1、掌上程序辅助器下载破...
第6分钟了解!赣牌圈靠谱吗!确... 第6分钟了解!赣牌圈靠谱吗!确实真的是有辅助工具(有挂技巧)-哔哩哔哩1、进入到赣牌圈靠谱吗是否有挂...
第五分钟了解!三哥玩辅助器软件... 第五分钟了解!三哥玩辅助器软件!切实存在有辅助攻略(有挂解惑)-哔哩哔哩1、第五分钟了解!三哥玩辅助...
第3分钟了解!爱玩娱乐暗堡辅助... 第3分钟了解!爱玩娱乐暗堡辅助!一直有辅助攻略(有挂解惑)-哔哩哔哩1、每一步都需要思考,不同水平的...
第一分钟了解!朋友局app辅助... 第一分钟了解!朋友局app辅助器下载!真是真的有辅助app(有挂方法)-哔哩哔哩1、下载好朋友局ap...
9分钟了解!微乐小程序辅助器!... 9分钟了解!微乐小程序辅助器!好像真的有辅助软件(确实有挂)-哔哩哔哩1、点击下载安装,微乐小程序辅...
第四分钟了解!游戏辅助制作器!... 第四分钟了解!游戏辅助制作器!竟然一直都是有辅助攻略(有挂方针)-哔哩哔哩1、进入游戏-大厅左侧-新...