EJB3.0里的@SecondaryTable记录

EJB3.0里的@SecondaryTable 可以将一个 entity bean 对应数据库里的多张表,

下面的代码是仿照javaee doc 上写的,测试通过。

 

数据表图:

 

 

 

 

 

 

 

 

 

 

 

 

@SuppressWarnings("serial")
@Entity
@Table(name="part")
@SecondaryTable(
		name="partdetail",
		pkJoinColumns={
			@PrimaryKeyJoinColumn(name="partnumber",referencedColumnName="partnumber"),
			@PrimaryKeyJoinColumn(name="revision",referencedColumnName="revision")
		}
)
@IdClass(PartKey.class)
public class Part implements Serializable {
	private String partNumber;
	private Integer revision;
	private String partDescription;
	private Date revisionDate;
	
	private Part bomPart;
	private List<Part> parts;
	
	private Serializable drawing;
	private String specification;
			
	@Column(table="partdetail")
	@Lob
	public Serializable getDrawing() {
		return drawing;
	}
	public void setDrawing(Serializable drawing) {
		this.drawing = drawing;
	}
	
	@Column(table="partdetail")
	@Lob
	public String getSpecification() {
		return specification;
	}
	public void setSpecification(String specification) {
		this.specification = specification;
	}
	
	@Id
	@Column(name="partnumber",nullable=false)
	public String getPartNumber() {
		return partNumber;
	}
	public void setPartNumber(String partNumber) {
		this.partNumber = partNumber;
	}
	
	@Id
	@Column(name="revision",nullable=false)
	public Integer getRevision() {
		return revision;
	}
	public void setRevision(Integer revision) {
		this.revision = revision;
	}
	
	@Column(name="partdescription")
	public String getPartDescription() {
		return partDescription;
	}
	public void setPartDescription(String partDescription) {
		this.partDescription = partDescription;
	}
	
	@Temporal(TemporalType.DATE)
	public Date getRevisionDate() {
		return revisionDate;
	}
	public void setRevisionDate(Date revisionDate) {
		this.revisionDate = revisionDate;
	}
	
	@ManyToOne
	@JoinColumns({
		@JoinColumn(name="bompartnumber",referencedColumnName="partnumber"),
		@JoinColumn(name="bomrevision",referencedColumnName="revision")
	})
	public Part getBomPart() {
		return bomPart;
	}
	public void setBomPart(Part bomPart) {
		this.bomPart = bomPart;
	}
	
	@OneToMany(mappedBy="bomPart",cascade=CascadeType.ALL)
	public List<Part> getParts() {
		return parts;
	}
	public void setParts(List<Part> parts) {
		this.parts = parts;
	}
	
	
}

 

其中:

 

@SecondaryTable(
		name="partdetail",//表示从表名
		pkJoinColumns={// 从表到主表的主键映射
			@PrimaryKeyJoinColumn(name="partnumber",referencedColumnName="partnumber"),
			@PrimaryKeyJoinColumn(name="revision",referencedColumnName="revision")
			// 其中:name为从表字段,referencedColumnName为主表字段
		}
)
 

还有映射字段时注意加上表名:

 

	@Column(table="partdetail")
	@Lob
	public Serializable getDrawing() {
		return drawing;
	}
	
	@Column(table="partdetail")
	@Lob
	public String getSpecification() {
		return specification;
	}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值