Hibernate Mapping 如何实现这样的代码?
每家公司都有两个属性,即公司名称和估计年收入。 有两种类型的公司:1-主要公司,2 - 子公司。 该公司只能属于一家公司,但可以拥有一些子公司。
True
答案 0 :(得分:0)
在您的实施中,您应该使用:
@Entity
注释,因此可以将实体持久化到数据库。@Column
注释包含companyName
和estimatedAnnualEarnings
属性,因此可以将它们保存为数据库中的列。@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
字段的名称更改为mainCompany
和
subsidiaryCompaniy
改为subsidiaryCompanies
以提高可读性
并使其更符合逻辑。@Table(name="differentName")
@Entity
注释,可以添加的列
name
注释的@Column
属性,即
@Column(name="company_name")
如果你想要不同的名字。