插入子项和父项 JSON Spring 启动
Insert in child and parent JSON Spring Boot
我的 spring 启动应用程序数据中有 3 个实体,应用程序用户、教师和学生
应用用户
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name= "appuserId", updatable=false)
private Long appuserId;
@Column(name = "username")
private String username;
@Column(name = "fullname")
private String fullName;
@Column(name = "email")
private String email;
@Column(name = "password")
private String password;
@OneToOne(mappedBy = "appuser")
private Teacher teacher;
@OneToOne(mappedBy = "appuser")
private Student student;
老师
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "teacherId" , updatable = false)
private Long teacherId;
@Column(name= "firstname")
private String firstName;
@Column(name = "lastname")
private String lastName;
@Column(name="designation")
private String designation;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "appuserId", nullable = true)
private Appuser appuser;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true ,mappedBy="teacher")
@JsonIgnore
private List<Course> courses;
学生
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name= "studentId", updatable=false)
private Long studentId;
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
@Column(name = "enrolledSince")
private String enrolledSince;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "appuserId", nullable = false)
private Appuser appuser;
@OneToMany(cascade = CascadeType.ALL,orphanRemoval=true, mappedBy="student")
@JsonIgnore
private List<CourseStudent> courseStudents;
我可以在 appusers table 中使用 json 格式在 postman 中插入并且运行良好。但是当我尝试插入教师或学生 table 时,appusers 中的结果为空。它不应该为空,因为应用用户的教师和学生外键。
这不应该发生。当您保存教师或学生时,您应该指定数据库中已经存在的 appuser。并使用appuserId代替Appuser,这足以识别它属于哪个appuser。
保存教师或学生并请求加入数据库后,您可以获取您的appuser。
当您尝试插入教师或学生 table 时,请确保您在坚持时将值设置为 appuser。
Student std =new Student();
// create an object of appuser,set its vaue and assign it to student object
Appuser ap = new Appuser();
// assigning values to the appuser object as ap.setfullname="...";... so on
std.setAppuser=ap;
现在保留这个学生对象,条目将反映在映射中 table
或者您可以在已经持久化的 std 对象中设置 appuser 的 id。
我的 spring 启动应用程序数据中有 3 个实体,应用程序用户、教师和学生
应用用户
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name= "appuserId", updatable=false) private Long appuserId; @Column(name = "username") private String username; @Column(name = "fullname") private String fullName; @Column(name = "email") private String email; @Column(name = "password") private String password; @OneToOne(mappedBy = "appuser") private Teacher teacher; @OneToOne(mappedBy = "appuser") private Student student;
老师
@Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "teacherId" , updatable = false) private Long teacherId; @Column(name= "firstname") private String firstName; @Column(name = "lastname") private String lastName; @Column(name="designation") private String designation; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "appuserId", nullable = true) private Appuser appuser; @OneToMany(cascade = CascadeType.ALL, orphanRemoval=true ,mappedBy="teacher") @JsonIgnore private List<Course> courses;
学生
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name= "studentId", updatable=false) private Long studentId; @Column(name = "firstName") private String firstName; @Column(name = "lastName") private String lastName; @Column(name = "enrolledSince") private String enrolledSince; @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "appuserId", nullable = false) private Appuser appuser; @OneToMany(cascade = CascadeType.ALL,orphanRemoval=true, mappedBy="student") @JsonIgnore private List<CourseStudent> courseStudents;
我可以在 appusers table 中使用 json 格式在 postman 中插入并且运行良好。但是当我尝试插入教师或学生 table 时,appusers 中的结果为空。它不应该为空,因为应用用户的教师和学生外键。
这不应该发生。当您保存教师或学生时,您应该指定数据库中已经存在的 appuser。并使用appuserId代替Appuser,这足以识别它属于哪个appuser。
保存教师或学生并请求加入数据库后,您可以获取您的appuser。
当您尝试插入教师或学生 table 时,请确保您在坚持时将值设置为 appuser。
Student std =new Student();
// create an object of appuser,set its vaue and assign it to student object
Appuser ap = new Appuser();
// assigning values to the appuser object as ap.setfullname="...";... so on
std.setAppuser=ap;
现在保留这个学生对象,条目将反映在映射中 table 或者您可以在已经持久化的 std 对象中设置 appuser 的 id。