Вставьте в дочерний и родительский JSON Spring Boot - PullRequest
0 голосов
/ 03 октября 2019

У меня есть 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. Teacher

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

Я могу вставить в таблицу appusers, используя формат json в почтальоне, и все идет хорошо. но когда я пытаюсь вставить в таблицу учителя или ученика, результат в appusers будет нулевым. он не должен быть нулевым, поскольку внешний ключ учителя и ученика для пользователей.

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Этого не должно быть. При сохранении учителя или ученика вы должны указать appuser, который уже есть в базе данных. И используйте appuserId вместо Appuser, которого вполне достаточно, чтобы определить, к какому приложению он принадлежит.

Вы можете получить свой appuser после того, как сохраните учителя или ученика и сделаете запрос с присоединением к базе данных.

0 голосов
/ 03 октября 2019

при попытке вставить в таблицу учителя или ученика, убедитесь, что вы устанавливаете значение 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;

теперь сохраните этот объект ученика, записи будут отражены в отображенномтаблица или вы можете установить идентификатор appuser в объекте std, который уже сохранен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...