OneToOne
public classEmployee implements Serializable { …… @OneToOne (cascade = CascadeType.ALL, orphanRemoval = true , fetch = FetchType.LAZY) @JoinColumn (name = "ADDR_ID" ) private Address address; … … } |
ManyToOne
public classEmployee implements Serializable { …… @ManyToOne (fetch = FetchType.LAZY) @JoinTable (name = "EMP_JOB" , joinColumns = @JoinColumn (name = "EMP_ID" ), inverseJoinColumns = @JoinColumn (name = "TITLE_ID" )) //連接表 joinColumns參考主表的主鍵的列,inverseJoinColumns參考字段或屬性生成的表格的主鍵的列 private JobTitle jobTitle; @ManyToOne (fetch = FetchType.LAZY) @JoinColumn (name = "MANAGER_ID" ) private Employee manager; … … } |
OneToMany
public classEmployee implements Serializable { …… @OneToMany (mappedBy = "manager" ) //manager字段擁有關係 private List<Employee> managedEmployees = newArrayList<Employee>(); @OneToMany (mappedBy = "owner" , cascade = CascadeType.ALL, orphanRemoval = true ) private List<PhoneNumber> phoneNumbers = newArrayList<PhoneNumber>(); @OneToMany (cascade = CascadeType.ALL, orphanRemoval = true ) @JoinColumn (name= "EMP_ID" ) private List<Degree> degrees = newArrayList<Degree>(); …… } |
ManyToMany
public classEmployee implements Serializable { …… @ManyToMany //連接表 @JoinTable (name = "PROJ_EMP" , joinColumns = @JoinColumn (name = "EMP_ID" ), inverseJoinColumns = @JoinColumn (name = "PROJ_ID" )) private List<Project> projects = newArrayList<Project>(); … … } |
联合主键映射
ManyToOne OneToMany ManyToMany映射,而且采用JoinTable映射,会出现联合主键,即双主键。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步