Я создаю простую программу при весенней загрузке, используя JPA , чтобы показать студент и номер телефона отношение.
КОД
Студенческая организация
package student.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
int roll;
@OneToOne
PhoneNumber num;
public Student() {
super();
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public int getRoll() {
return roll;
}
public PhoneNumber getNum() {
return num;
}
public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setRoll(int roll) {
this.roll = roll;
}
public void setNum(PhoneNumber num) {
this.num = num;
}
}
PhoneNumber Entity
package student.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class PhoneNumber {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
Long id;
String num;
String type;
@OneToOne
Student stu;
public PhoneNumber() {
super();
}
public PhoneNumber(String num, String type) {
super();
this.num = num;
this.type = type;
}
public Long getId() {
return id;
}
public String getNum() {
return num;
}
public void setId(Long id) {
this.id = id;
}
public void setNum(String num) {
this.num = num;
}
public Student getStu() {
return stu;
}
public void setStu(Student stu) {
this.stu = stu;
}
}
Студент и номер телефонарепо
package student.repo;
import org.springframework.data.repository.CrudRepository;
import student.entity.Student;
public interface StudentRepo extends CrudRepository<Student, Long> {
}
package student.repo;
import org.springframework.data.repository.CrudRepository;
import student.entity.PhoneNumber;
public interface PhoneNumberRepo extends CrudRepository<PhoneNumber, Long>{
}
SeedFile для ввода фиктивных данных
package student;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import student.entity.PhoneNumber;
import student.entity.Student;
import student.repo.PhoneNumberRepo;
import student.repo.StudentRepo;
@Component
public class SeedDb implements CommandLineRunner {
private StudentRepo studentRepo;
private PhoneNumberRepo phoneNumberRepo;
public SeedDb(StudentRepo studentRepo, PhoneNumberRepo phoneNumberRepo) {
super();
this.studentRepo = studentRepo;
this.phoneNumberRepo = phoneNumberRepo;
}
@Override
public void run(String... args) throws Exception {
System.out.println("######################");
Student stu1 = new Student();
stu1.setName("X");
stu1.setRoll(4);
PhoneNumber p = new PhoneNumber("9090909090","Home");
phoneNumberRepo.save(p); //saving phone number to database
stu1.setNum(p);
studentRepo.save(stu1);
}
}
В этой программе (в файле seedDb) я должен вручную сохранить Телефонный номер с использованием phoneNumberRepo перед установкой его на student , но есть онлайн-учебники, в которых этот шаг не нужен.
Кроме того, идентификатор студент не сохраняется на номер телефона , как показано на скриншоте
Подскажите, пожалуйста, как установить PhoneNumber в студент без сохранения его в базе данных, т.е. когда я сохраняю студент , phoneNumber автоматически сохраняются в базе данных и как установитьидентификатор студента на номер телефона автоматически.