I have three entity employee , info, and address , i want mapped employee entity with info and address entity by using onetoone mapping by using hibernate and jpa annotation.
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int empId;
private String name;
private String email;
@OneToOne(mappedBy = "emp", cascade = CascadeType.ALL)
private Info info;
@OneToOne(mappedBy = "emp", cascade = CascadeType.ALL)
private Address address;
//getter and setter
@Entity
public class Info {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int infoId;
private String gender;
private String phone;
@OneToOne
@JoinColumn(name = "emp_id")
private Employee emp;
//getter and setter
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int addrId;
private String street;
private String city;
private String country;
@OneToOne
@JoinColumn(name = "emp_id")
private Employee emp;
//getter and setter
public class OneToOneApp {
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.configure("o2omapping.cfg.xml");
SessionFactory sessionFactory=configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Employee employee =new Employee();
employee.setName("Iqra");
employee.setEmail("[email protected]");
Address address = new Address();
address.setStreet("Manda Road");
address.setCity("Allahabad");
address.setCountry("India");
Info info = new Info();
info.setGender("FeMale");
info.setPhone("12334567");
employee.setInfo(info);
info.setEmp(employee);
address.setEmp(employee);
session.save(employee);
transaction.commit();
session.close();
}
}
alter table Info
add constraint FKdjqy16j48ffa2x19eqgx3o8f0
foreign key (emp_id)
references Employee (empId)
Hibernate:
insert
into
Employee
(email, name)
values
(?, ?)
Hibernate:
insert
into
Info
(emp_id, gender, phone)
values
(?, ?, ?)
data not Inserted into address table
why??
2
Answers
It looks like you have correctly set up the one-to-one mapping between the Employee, Info, and Address entities. However, in the
OneToOneApp
main method, you haven’t set the employee’s address before saving the employee.To fix the issue, you need to add the following line in the
OneToOneApp
main method before saving the employee:Here’s the updated
OneToOneApp
main method:Now, when you run the updated application, the employee’s address should be inserted into the Address table as well.
he is telling the truth. You have set the address object in the customer class with a One-to-One relationship dependency, but you have not set its information. You should add this after the line
employee.setAddress()
,employee.setInfo()
.