У меня две сущности, первая - студент, а вторая - адрес. Слишком много отношений ie по одному адресу может быть много учеников. Теперь у меня есть страница регистрации. Когда я впервые регистрирую, что студент говорит с названием страны United States, он сохраняется в базе данных, предоставляя первичный идентификатор как 1 для Соединенных Штатов и, соответственно, дает правильный идентификатор в базе данных студента. Но когда я снова пытаюсь зарегистрировать следующего студента с другой информацией, но с той же страной, в моем случае с Соединенными Штатами, он дает мне новый первичный ключ для той же страны. Но поскольку это одно ко многим отношениям, я думаю, есть ли что-нибудь в спящем режиме, которое сопоставляется с одним и тем же идентификатором в базе данных адресов, поэтому у меня будет только одно значение соединенных штатов в базе данных адресов. Мне нужно иметь только одну запись в базе данных США. Как лучше всего удовлетворять нужды? Спасибо
Это таблица адресов
@Entity
@Table(name = "tbl_address")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "address_id")
private int addressId;
private String country;
@OneToMany(targetEntity = Student.class, mappedBy = "address")
private List<Student> student;
Это таблица учеников
@Entity
@Table(name = "tbl_student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "student_id")
private int studentId;
@Column(name = "first_Name")
private String firstName;
@Column(name = "second_Name")
private String secondName;
private String email;
@Column(name = "mobile_no")
private float mobileNo;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Temporal(TemporalType.DATE)
private Date dob;
private String gender;
@ManyToOne(cascade = {CascadeType.MERGE , CascadeType.ALL} )
@JoinColumn(name = "address_id")
private Address address;
}
Это просто реализация в классе StudentRepositoryImpl
@Override
public void saveUserInfo(Student user) {
Session session = HibernateUtil.getSession(sessionFactory);
session.save(user);
}
@Override
public void saveAddressInfo(Address address) {
// TODO Auto-generated method stub
Session session = HibernateUtil.getSession(sessionFactory);
session.save(address);
}