Saya mempunyai pekerja yang bekerja di pelbagai jabatan. Saya mempunyai hubungan OneToMany dalam Employee dan ManyToOne dalam kelas Department.
@Entity public class Employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Size(min = 3, max = 10, message = "Invalid name") private String name; @Email private String email; @OneToMany(mappedBy = "employee") private List<Department> departments; } @Entity public class Department { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String department; @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "employee_id", referencedColumnName = "id") private Employee employee; }
Jadual yang dibuat dalam MySQL kelihatan seperti ini:
Masalahnya ialah saya akan mempunyai ramai pekerja dan mereka boleh mempunyai beberapa jabatan. Meja jabatan akan menjadi terlalu besar dan nama jabatan akan diulang untuk pekerja yang berbeza seperti yang ditunjukkan dalam imej di atas Saya mempunyai 2xManagement. Soalan saya ialah jika boleh membuat jadual jabatan tanpa id_pekerja (hanya dengan nama jabatan) dan pautan dalam jadual berasingan dengan hanya dua atribut (id_pekerja dan id_jabatan). Adakah saya perlu membuat kelas baharu untuk ini? Bagaimanakah saya boleh mengoptimumkan hubungan ini? Adakah terdapat cara untuk melakukannya?
Anda perlu menukar penyelesaian kepada @ManyToMany menggunakan entiti yang lemah, Rujukan: https://www.baeldung.com/hibernate-many-to-many