在子级和父级JSON Spring Boot中插入

问题描述 投票:0回答:1

我的春季启动App数据表中有3个实体,分别是Appusers,Teacher和Student

  1. Appusers

    @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;
    
  2. 老师

    @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;
    
  3. 学生

    @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;
    

我可以在邮递员中使用json格式插入appusers表中,并且运行良好。但是,当我尝试插入教师或学生表时,appusers中的结果为null。它不应为null,因为老师和学生对应用程序用户的外键。

spring spring-boot spring-data-jpa postman spring-data-rest
1个回答
0
投票

这不应该发生。保存老师或学生时,应指定数据库中已经存在的appuser。并使用appuserId代替Appuser,这足以确定它属于哪个appuser。

© www.soinside.com 2019 - 2024. All rights reserved.