Hibernate JPA@JoinColumn和实体之间的关系
在本例中,来自 在本例中:Hibernate JPA@JoinColumn和实体之间的关系,hibernate,jpa,Hibernate,Jpa,在本例中,来自 在本例中: @Entity public class Company { @OneToMany(fetch = FetchType.LAZY, mappedBy = "company") private List<Branch> branches; } @Entity public class Branch { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "company
@Entity
public class Company {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "company")
private List<Branch> branches;
}
@Entity
public class Branch {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "companyId")
private Company company;
}
@实体
公营公司{
@OneToMany(fetch=FetchType.LAZY,mappedBy=“company”)
私人上市分行;
}
@实体
公营部门{
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“companyId”)
私营公司;
}
在“@JoinColumn(name=“companyId”)”中,为什么没有“referencedColumnName=id”?它有效吗?JoinColumn注释不是强制性的。我不知道为什么这么多教程使用此注释,因为它只覆盖默认行为。当他们不喜欢默认生成的名称时,自定义命名策略将是更好的选择 简而言之:
JoinColumn注释不是必需的。我不知道为什么这么多教程使用此注释,因为它只覆盖默认行为。当他们不喜欢默认生成的名称时,自定义命名策略将是更好的选择 简而言之:
您不必这样做,在公司@Entity中,我猜您在某些字段中有@Id注释。看起来不正确
@ManyToOne
protected Set<Person> owners;
因此,@JoinColumn
不能与@manytomy
关联一起使用,因为连接表用于此类关联。无论如何,在适当的时候,我总是使用@JoinColumn
使映射更加清晰
为什么@ManyToOne(targetEntity=Person.class)
中没有限定符
它可以通过genericSet
计算出来。因此无需具体说明。这对理解映射没有帮助
在“@JoinColumn(name=“companyId”)”中,为什么没有
referencedColumnName=id“?它有效吗
默认情况下,Hibernate使用公司的id
属性进行关联。这是有效的
摘要
我看到很多映射都带有几十个不必要的注释。这很难理解。请仅使用那些映射更清晰的注释。看起来不正确
@ManyToOne
protected Set<Person> owners;
因此,@JoinColumn
不能与@manytomy
关联一起使用,因为连接表用于此类关联。无论如何,在适当的时候,我总是使用@JoinColumn
使映射更加清晰
为什么@ManyToOne(targetEntity=Person.class)
中没有限定符
它可以通过genericSet
计算出来。因此无需具体说明。这对理解映射没有帮助
在“@JoinColumn(name=“companyId”)”中,为什么没有
referencedColumnName=id“?它有效吗
默认情况下,Hibernate使用公司的id
属性进行关联。这是有效的
摘要
我看到很多映射都带有几十个不必要的注释。这很难理解。请仅使用那些映射更清晰的注释。如果没有JoinColumn和referencedColumnName,您如何知道这两个实体通过哪些字段相关?这取决于使用的命名策略。通常是类似于“名称”id或“名称”id(如公司id或公司id)的内容。命名策略的优点是,例如,它允许为每个生成的表名添加前缀。请参见Pet课程中的第三个问题->示例。我刚刚添加了。没有JoinColumn和referencedColumnName,您如何知道这两个实体通过哪些字段相关?这取决于使用的命名策略。通常是类似于“名称”id或“名称”id(如公司id或公司id)的内容。命名策略的优点是,例如,它允许为每个生成的表名添加前缀。请参见Pet课程中的第三个问题->示例。我刚刚添加了。没有referencedColumnName=id,Company类的id如何与Branch中的companyId关联?Company通过mappedBy=“Company”与Branch关联,后者是公司的名称
@ManyToOne
protected Set<Person> owners;
@ManyToMany
protected Set<Person> owners;
@ManyToOne
@JoinColumn
protected Person owner;