EJB---->多表映射
实体的成员属性映射的字段分布在多张表中,如何处理?
本例子的实体MainTable具有四个成员属性:id、name、address和postcode。
其中与id和name映射的字段在MainTable表,与address和postcode属性映射的字段在Address表。
需要使用@javax.persistence.SecondaryTable注释和@Column.table()属性


import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.PrimaryKeyJoinColumn; import javax.persistence.SecondaryTable; @Entity // name 另一张表的表名 pkJoinColumns 另一张表的PK @SecondaryTable(name = "Address", pkJoinColumns = {@PrimaryKeyJoinColumn(name = "address_id")} ) public class MainTable implements Serializable{ private static final long serialVersionUID = 4016777473296175005L; private Integer id;// 主键 private String name;// 姓名 private String address;// 地址,该映射的字段分布在Address表 private String postcode;// 邮编,该映射的字段分布在Address表 @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(nullable=false,length=32) public String getName() { return name; } public void setName(String name) { this.name = name; } // 指定映射到表名为 Address 的表中 @Column(table="Address") public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } // 指定映射到表名为 Address 的表中 @Column(length=6, table="Address") public String getPostcode() { return postcode; } public void setPostcode(String postcode) { this.postcode = postcode; } @Override public int hashCode() { int hash = 0; hash += (this.id != null ? this.id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { if (!(object instanceof MainTable)) { return false; } MainTable other = (MainTable)object; if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) return false; return true; } @Override public String toString() { return this.getClass().getName()+ "[id="+id+ ",name="+ name+ ",address="+ address+ ",postcode="+ postcode + "]"; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律