Я смущен над работой над @JoinColumn и @MappedBy.Как работает @JoinColumn и @MappedBy
Рассмотрим следующий пример Вот мой класс Отдел с однонаправленной отношений
@Entity
@Table(name = "DEPARTMENT")
public class Department {
@Id
@Column(name = "DEPARTMENT_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer departmentId;
@Column(name = "DEPARTMENT_NAME")
private String departmentName;
@Column(name = "LOCATION")
private String location;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "DEPARTMENT_ID")
private List<Employee> employees = new ArrayList<>();
}
У меня есть list of employees
в Department class
, над которым я указанный @JoinColumn
так это добавит department_id
FK в employee table
.
но с двунаправленной связи я определить классы как
Department.java
@Entity
@Table(name = "DEPARTMENT")
public class Department {
@Id
@Column(name = "DEPARTMENT_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer departmentId;
@Column(name = "DEPARTMENT_NAME")
private String departmentName;
@Column(name = "LOCATION")
private String location;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "department")
private List<Employee> employees = new ArrayList<>();
}
Employee.java
@Entity
@Table(name = "EMPLOYEE")
public class Employee {
@Id
@SequenceGenerator(name = "emp_seq", sequenceName = "seq_employee")
@GeneratedValue(generator = "emp_seq")
@Column(name = "EMPLOYEE_ID")
private Integer employeeId;
@Column(name = "EMPLOYEE_NAME")
private String employeeName;
@ManyToOne
@JoinColumn(name = "DEPARTMENT_ID")
private Department department;
}
но с двунаправленной связи, почему мне нужно сделать, чтобы разместить @JoinColumn
над department
в Employee class
и написать @MappedBy
над list of employees
в Department class
?
обновление
так же, как и @MappedBy @JoinColumn работает?
Почему 2-е отображение 'Департамента' не содержит аннотаций '@ Table' и' @ Entity'? –
Я забыл его скопировать. Спасибо @JordiCastilla за это. – eatSleepCode