рдЯреЗрдмрд▓-рд▓реЗрд╡рд▓ рд░рд┐рд▓реЗрд╢рдирд╢рд┐рдк

рдЖрдЗрдП рд╣рдорд╛рд░реА рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдВ:

рдкрд╣рдЪрд╛рди рдирд╛рдо рдкреЗрд╢рд╛ рд╡реЗрддрди рдЖрдпреБ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рддрд╛рд░реАрдЦ
1 рдЗрд╡рд╛рдиреЛрд╡ рдЗрд╡рд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ 100000 25 2012-06-30
2 рдкреЗрдЯреНрд░реЛрд╡ рдкреЗрдЯреНрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ 80000 23 2013-08-12
3 рдЗрд╡рд╛рдиреЛрд╡ рд╕рд░реНрдЧреЗрдИ рдЯреЗрд╕реНрдЯрд░ 40000 рддреАрд╕ 2014-01-01
4 рд░рд╛рдмрд┐рдиреЛрд╡рд┐рдЪ рдореЛрдЗрд╢рд╛ рдирд┐рджреЗрд╢рдХ 200000 35 2015-05-12
5 рдХрд┐рд░рд┐рдВрдХреЛ рдЕрдирд╛рд╕реНрддрд╛рд╕рд┐рдпрд╛ рдХрд╛рд░реНрдпрд╛рд▓рдп рдкреНрд░рдмрдВрдзрдХ 40000 25 2015-10-10
6 рд╡рд╛рд╕реНрдХрд╛ рдмрд┐рд▓реНрд▓реА 1000 3 2018-11-11

рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛:

рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрддрдВрдн рд╣реИрдВ:

  • рдЖрдИрдбреА рдЖрдИрдПрдирдЯреА
  • рд╡рдЪрд░рд░ рдирд╛рдо
  • рд╡реНрдпрд╡рд╕рд╛рдп рд╡рд░рдЪрд╛
  • рд╡реЗрддрди рдЖрдИ.рдЯреА
  • рдЖрдпреБ рдЖрдИ.рдЯреА
  • join_date DATE

рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛рд░реНрдп рддрд╛рд▓рд┐рдХрд╛ , рдЬрд┐рд╕рдореЗрдВ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдкрд╣рдЪрд╛рди рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА рдирд╛рдо рдЕрдВрддрд┐рдо рддрд╛рд░реАрдЦ
1 1 рджреГрд╢реНрдпрдкрдЯрд▓ рдкрд░ рдПрдХ рдмрдЧ рдареАрдХ рдХрд░реЗрдВ 2022-06-01
2 2 рдмреИрдХрдПрдВрдб рдкрд░ рдПрдХ рдмрдЧ рдареАрдХ рдХрд░реЗрдВ 2022-06-15
3 5 рдХреЙрдлреА рдЦрд░реАрджреЗрдВ 2022-07-01
4 5 рдХреЙрдлреА рдЦрд░реАрджреЗрдВ 2022-08-01
5 5 рдХреЙрдлреА рдЦрд░реАрджреЗрдВ 2022-09-01
6 (рд╡реНрдпрд░реНрде) рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреА рд╕рдлрд╛рдИ рдХрд░реЗрдВ (рд╡реНрдпрд░реНрде)
7 4 рдЬреАрд╡рди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ (рд╡реНрдпрд░реНрде)
8 6 рдЬреАрд╡рди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ (рд╡реНрдпрд░реНрде)

рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЗрд╡рд▓ 4 рд╕реНрддрдВрдн рд╣реИрдВ:

  • рдЖрдИрдбреА рдХрд╛рд░реНрдп рдХреА рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ)ред
  • рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА - рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рдХреА рдЖрдИрдбреА рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдп рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
  • рдирд╛рдо - рдХрд╛рд░реНрдп рдХрд╛ рдирд╛рдо рдФрд░ рд╡рд┐рд╡рд░рдгред
  • рд╕рдордп рд╕реАрдорд╛ - рд╡рд╣ рд╕рдордп рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдХрд╛рд░реНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреЗрдмрд▓-рд▓реЗрд╡рд▓ рд░рд┐рд▓реЗрд╢рдирд╢рд┐рдк рдХреЛ рд╡рди-рдЯреВ -рдореИрдиреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рд╕реНрддрд░ рд╕реЗ рд╕рдВрдмрдВрдз

рдФрд░ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдПрдВ, рдХрд░реНрдордЪрд╛рд░реА рд╡рд░реНрдЧ :

@Entity
@Table(name="user")
class Employee {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="occupation")
   public String occupation;

   @Column(name="salary")
   public Integer salary;

   @Column(name="join_date")
   public Date join;
}

рдФрд░ рдХрд░реНрдордЪрд╛рд░реА рдХрд╛рд░реНрдп рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ:

@Entity
@Table(name="task")
class EmployeeTask {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String description;

   @Column(name="employee_id")
   public Integer employeeId;

   @Column(name="deadline")
   public Date deadline;
}

@OneToMany рдПрдиреЛрдЯреЗрд╢рди

рд╣рдо Entity Classes рдХреЗ рдмреАрдЪ Communication рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ElementCollection рдПрдиреЛрдЯреЗрд╢рди рдпрд╛рдж рд░рдЦреЗрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЪрд╛рдЗрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ? @OneToMany рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рд╕рд┐рд░реНрдл рдЗрд╕ рдмрд╛рд░ рдХрд░реНрдордЪрд╛рд░реА рд╡рд░реНрдЧ рдореЗрдВ рд╣реЛрдЧрд╛ рдмрджрд▓рд╛рд╡ :

@Entity
@Table(name="user")
class Employee {
   @Column(name="id")
   public Integer id;

   @OneToMany(cascade = CascadeType.ALL)
   @JoinColumn(name = "employee_id")
   private Set<EmployeeTask> tasks = new HashSet<EmployeeTask>();
}

@OneToMany рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╣рдордиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ objectрдХрд░реНрдордЪрд╛рд░реАрдХрдИ рдХрд░реНрдордЪрд╛рд░реА рдЯрд╛рд╕реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, @JoinColumn рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╣рдордиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдХрд╛рд░реНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХрд┐рд╕ рдХреЙрд▓рдо рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдХрд░реНрдордЪрд╛рд░реА.

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрд░реНрдордЪрд╛рд░реА рдХрд╛рд░реНрдп рд╡рд░реНрдЧ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА рдХреЙрд▓рдо рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:

@Entity
@Table(name="task")
class EmployeeTask {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String description;

   @Column(name="deadline")
   public Date deadline;
}

рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реЗрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ

рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рд╡рд░реНрдХрд░ рдХреЛ рдХреЛрдИ рдЯрд╛рд╕реНрдХ рдРрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:

EmployeeTask task1 = new EmployeeTask();
task1.description = "Do Something Important";
session.persist(task1);

EmployeeTask task2 = new EmployeeTask();
task2.description = "Nothing to do";
session.persist(task2);
session.flush();

Employee director = session.find(Employee.class, 4);
director.tasks.add(task1);
director.tasks.add(task2);

session.update(director);
session.flush();

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рджреЛ EmployeeTask рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ , рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлреНрд▓рд╢ () рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ INSERT рдСрдкрд░реЗрд╢рди рд╣реЛ рд╕рдХреЗ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ ID рд╣реЛред

рдлрд┐рд░ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рджреЗрд╢рдХ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдЙрд╕рд╕реЗ рдХрд╛рд░реНрдп рдХреНрд╖реЗрддреНрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рджреЛ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдирд┐рджреЗрд╢рдХ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА рдХреЙрд▓рдо рдореЗрдВ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдорд╛рди 4 рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ - рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рджреЗрд╢рдХ рдХреА рдЖрдИрдбреАред

рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯреЗрдмрд▓ @ManyToOne рдФрд░ @OneToMany рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдВ ред рд▓реЗрдХрд┐рди рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдЕрд▓рдЧ рд╣реИрдВред