проблема с сохранением внешнего ключа в весеннем отдыхе данных - PullRequest
0 голосов
/ 13 июля 2020

Как сохранить (POST) нового студента в этом случае

Student. java

@Entity
@Table(name = "student")
public class Student {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;

@Column(name = "firstname")
private String firstName;

@Column(name = "lastname")
private String lastName;

@Column(name = "email")
private String email;

@ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, 
                         CascadeType.REFRESH})
@JoinColumn(name = "deptid")
private Department department;

Department. java

@Entity
@Table(name = "department")
public class Department {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;

@Column(name = "deptname")
private String deptName;

@Column(name = "depthod")
private String deptHOD;

@OneToMany(mappedBy = "department",
                            fetch = FetchType.LAZY,
                                cascade = {CascadeType.DETACH, CascadeType.MERGE, 
                                          CascadeType.PERSIST, CascadeType.REFRESH})
private List<Student> students;

когда пытался сохранить кафедру, которую он сохраняет, но при попытке сохранить нового студента выдает ошибку (deptid не может быть нулевым)

Я пытался сохранить вот так

{
"firstName" : "ker",
"lastName" : "ope",
"email" : "ker@gmail.com",
"department" : 6
}

Пожалуйста, помогите мне в этом случае, как сохранить нового студента и обновить его

* Здесь внешний ключ депидирован в таблице ученика (Entity)

Ответы [ 2 ]

1 голос
/ 13 июля 2020

В вашем случае вам нужно будет отправить весь объект Department с объектом student в теле запроса.

Примерно как показано ниже!

{
    "firstName" : "ker",
    "lastName" : "ope",
    "email" : "ker@gmail.com",
    "department" : {
        "id" : 6,
        "deptName" : "dept1",
        "deptHOD" : "hod1"
    }
}
0 голосов
/ 13 июля 2020

Ваш отдел недвижимости является объектом не int. Попробуйте выбрать свое отделение по идентификатору и установить в студенческом объекте.

Department department  = departmentReṕository.findById(6);
//do validations if ok 
student.setDepartment(department);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...