mysql - 向自引用父/子添加一对多关系

标签 mysql spring hibernate

使用Spring和Hibernate,我可以实现自引用类和另一个类中的父/子之间的一对多关系吗?也就是说,这是自引用类:

数据库:

  CREATE TABLE `employee` (
  `employee_id` BIGINT(10) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(50) NULL DEFAULT NULL,
  `manager_id` BIGINT(20) NULL DEFAULT NULL,
  PRIMARY KEY (`employee_id`),
  CONSTRAINT `FK_MANAGER` FOREIGN KEY (`manager_id`) REFERENCES `employee`    

  (`employee_id`))

型号:

  @Entity
  @Table(name="employee")
  public class Employee {

  @Id
  @Column(name="employee_id")
  @GeneratedValue
  private Long employeeId;

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

  @ManyToOne(cascade={CascadeType.ALL})
  @JoinColumn(name="manager_id")
  private Employee manager;

  @OneToMany(mappedBy="manager")
  private Set<Employee> employee = new HashSet<Employee>();

现在我想为父/子(经理/员工)和另一个类创建一对多关系,如下所示:

  @OneToMany(mappedBy="manager")
  private List<Course> course = new ArrayList<Course>();

  @OneToMany(mappedBy="lecturer")
  private List<Course> courses = new ArrayList<Course>();

因此,经理和员工都会与一门或多门类(class)有关联。类(class)类(class):

  @Entity
  @Table(name = "courses")
  @Component
  public class Course implements Serializable

  @ManyToOne
  @JoinColumn(name="employee_id", insertable=false, updatable=false)
  private Employee employee;

  @ManyToOne
  @JoinColumn(name="manager_id", insertable=false, updatable=false)
  private Employee manager;

这是我正在尝试实现的概述,但我想知道这是否可能,如果可以的话,我将如何在数据库关系中设置它,并能够通过 hibernate 将关系保存到数据库。

最佳答案

@OneToMany(mappedBy="manager") 
private List<Course> managedCourses = new ArrayList<Course>();

@OneToMany(mappedBy="lecturer")
private List<Course> lectuedCourses = new ArrayList<Course>();

...

@Entity
@Table(name = "courses")
@Component
public class Course implements Serializable

@ManyToOne
@JoinColumn(name="lecturer_id", insertable=false, updatable=false)
private Employee lecturer;

@ManyToOne
@JoinColumn(name="manager_id", insertable=false, updatable=false)
private Employee manager;

关于mysql - 向自引用父/子添加一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16184580/

相关文章:

java - 如何使用 NetBeans 进行 Servlet 与 MySQL 的 JDBC 连接

mysql - 为什么这个查询会使我的整个数据库卡住?

php - 如何修复此 mySQL 代码以显示正确的输出?

java - Spring 框架的类似 Guice 的解决方案

java - 将 Java Bean 从 Applet 发送到 Servlet

spring - 在事务服务调用中执行 JSR 303 验证

hibernate - DELETE_ORPHAN 和 DELETE 有什么区别?

java - 为什么我不能将 java.util.Date 与 mysql 日期进行比较?

java - Spring Boot Hibernate 没有事务正在进行

mysql - 如何选择表的校验和加上mysql中的行数