有没有办法使用 JPA 优化 ManyToOne 关系?
P粉609866533
P粉609866533 2024-01-29 13:09:59
[MySQL讨论组]

我有一名员工可以在多个部门工作。我在 Employee 中有 OneToMany 关系,在 Department 类中有 ManyToOne。

@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;
}

在 MySQL 中创建的表如下所示:

  • 员工表:
  • 部门表:

问题是我将有多名员工,他们可以有多个部门。部门表将太大,并且不同员工的部门名称将重复,如上图所示,我有 2xManagement。我的问题是是否可以创建没有employee_id(仅具有部门名称)的部门表,并在仅具有两个属性(employee_id 和department_id)的单独表中进行链接。我需要为此创建一个新课程吗?我怎样才能优化这种关系?有办法做到吗?

P粉609866533
P粉609866533

全部回复(1)
P粉391955763

您需要使用弱实体将解决方案更改为@ManyToMany, 参考文献: https://www.baeldung.com/hibernate-many-to-many

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号