Hibernate 在 类 中存储字段

Hibernate Storing Fields inside Classes

我有两个 class 和两个单独的 table,"Employee" 和 "Company"。我想在公司 class 中保留一份员工名单。这很容易,但我不知道如何在数据库端表示这个列表。

Class 'Company':

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

}

Class 'Employee':

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

如果没有休眠,我会选择创建另一个 table 的设计,其中包含两列 'employeeId' 和 'companyId',并尝试让所有 'employeeIds' 的员工与 'companyId'。我不知道是否可以在休眠状态下做同样的事情。如果是这样怎么办?如果没有,您的解决方案是什么?

我认为您需要在 Company 和 Employees 之间实现 oneToMany 关系。 Hibernate @OneToMany 注解可用于相同的 .

Here 是展示如何在 Hibernate 中执行此操作的示例

简短的回答是,您可以将 Hibernate 配置为生成一个 30 table 来存储您希望的关联。 您可以使用 @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 的 table,其中包含您想要的两列以及 [=24= 的相应外键约束]s 员工公司。 您也可以使用 @ForeignKey 注释指定外键名称。