EJB---->多表映射

实体的成员属性映射的字段分布在多张表中,如何处理?
本例子的实体MainTable具有四个成员属性:idnameaddresspostcode
其中与idname映射的字段在MainTable表,与addresspostcode属性映射的字段在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 + "]";
    }
}


 

posted on   小强斋太  阅读(150)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2012年5月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
点击右上角即可分享
微信分享提示