我有两个班,有两个单独的表,“员工”和“公司”。我想在公司课程中保留一份员工名单。这很简单,但我不知道如何在数据库方面表示这个列表。
班级'公司':
@Entity
@Table(name = "company")
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
private List<Employee> employeeList;
}
班级'员工':
@Entity
@Table(name = "employee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
如果没有休眠,我会选择设计创建另一个包含两列'employeeId'和'companyId'的表,并尝试让所有员工使用'employeeId'匹配'companyId'。我不知道是否可以在休眠状态下执行相同操作。如果是这样的话?如果没有,你的解决方案是什么?
答案 0 :(得分:1)
我认为您需要在公司和员工之间实施oneToMany关系。 Hibernate @OneToMany
注释可以用于相同的。
Here是显示如何在Hibernate
中执行此操作的示例答案 1 :(得分:1)
简短的回答是,你可以配置Hibernate生成一个30表来存储你想要的关联。 您可以使用@JoinTable注释来实现此目的。按照你的例子,它将是:
@Entity
@Table(name = "company")
public class Company {
...
@OneToMany// or @ManyToMany
@JoinTable(name = "table_name",
joinColumns = @JoinColumn(name="employeeId", referencedColumnName="id"),
inverseJoinColumns = @JoinColumn(name="companyId", referencedColumnName="id"))
private List<Employee> employeeList;
现在,Hibernate将创建一个名为 table_name 的表,其中包含您想要的两列以及表 employee 和 company 。 您也可以使用@ForeignKey注释指定freign键名称。