Art*_*sov 6 java hibernate hibernate-mapping
这是父类Enterprise.它有雇主,其中一个是企业总裁.
@Entity
class Enterprise
{
// fields
@OneToMany
public List<Employee> getEmployers()
// implementation
@OneToOne
public Employee getPresident()
// implementation
}
Run Code Online (Sandbox Code Playgroud)
这是子Employee类.它只有关于他工作的企业的信息.但问题是我应该使用哪种关联?
@Entity
class Employee
{
// fields
// what association should I use?
public Enterprise getEnterprise()
// implementation
}
Run Code Online (Sandbox Code Playgroud)
鉴于你已经定义了Enterprise- > Employers关联@OneToMany,这意味着一个Employer属于只有一个Enterprise,你应该使用@ManyToOne,这意味着每个Employer属于最大.1 Enterprise,但Enterprise可以参考很多Employers.
您可以使用mapped-by注释中的属性仅在其中一个边中定义关联细节(连接列等):
@Entity
class Enterprise
{
@OneToMany(mapped-by="enterprise")
public List<Employee> getEmployers()
// implementation
@OneToOne
public Employee getPresident()
// implementation
}
@Entity
class Employee
{
@ManyToOne
@JoinTable ( name="Enterprise", joinColumns={ @JoinColumn(name="ENT_ID", referencedColumnName="ENT_ID") }
public Enterprise getEnterprise()
// implementation
}
Run Code Online (Sandbox Code Playgroud)
在情况下Employer可能是一个不同的总裁Enterprise,他采用(似乎不太可能,除非你可以是一个企业的总裁,而不被它采用的),并且如果你需要访问Enterprise它的Employer是总统从Employer实体,你需要添加另一个关联,理想情况下@OneToOne(你会遇到问题,因为@OneToOne关系要求两个实体都有相同的@Id类).在这种情况下,我将注释getPresidedEnterprise()的方法Employer与@ManyToOne实际的原因.