Hibernate Mapping只有一个类

时间:2017-07-07 22:00:09

标签: java hibernate hibernate-mapping

Hibernate Mapping 如何实现这样的代码?

每家公司都有两个属性,即公司名称和估计年收入。 有两种类型的公司:1-主要公司,2 - 子公司。 该公司只能属于一家公司,但可以拥有一些子公司。

True

1 个答案:

答案 0 :(得分:0)

在您的实施中,您应该使用:

  • 类级别中的@Entity注释,因此可以将实体持久化到数据库。
  • @Column注释包含companyNameestimatedAnnualEarnings属性,因此可以将它们保存为数据库中的列。
  • 带有@ManyToOne字段的
  • company注释,因此可以使用自引用关系进行映射。
  • 同样适用于需要与subsidiaryCompany注释一起映射的@OneToMany列表以建立关系。

这应该是你的代码:

@Entity
public class Company {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @Column
    private String companyName;

    @Column
    private double estimatedAnnualEarnings;

    @ManyToOne(cascade={CascadeType.ALL})
    @JoinColumn(name="mainCompanyId")
    private Company mainCompany; 

    @OneToMany(mappedBy="mainCompany")
    private List<Company> subsidiaryCompanies; 

    //getters and setters goes here
}

注意

  • 我将company字段的名称更改为mainCompanysubsidiaryCompaniy改为subsidiaryCompanies以提高可读性 并使其更符合逻辑。
  • 如果您想在数据库中为您的实体指定一个不同的名称 应该在课程级别使用@Table(name="differentName") @Entity注释,可以添加的列 name注释的@Column属性,即 @Column(name="company_name")如果你想要不同的名字。