码上敲享录 > Hibernate常见问题解答 > hibernate子表继承父表,实体之间如何关联

hibernate子表继承父表,实体之间如何关联

上一章章节目录下一章 2017-11-22已有3043人阅读 评论(0)

hibernate子表继承父表,实体之间如何关联


附件表cgform_uploadfiles(数据库中的字段有id,name两个字段)对应hibernate实体类CgUploadEntity

附件父表(和其他附件表公共字段而抽出来的字段)t_s_attachment(数据库中的字段有id,userId两个字段)对应hibernate实体类TSAttachment

例子:让cgform_uploadfiles表继承t_s_attachment表,意思是说在保存cgform_uploadfiles子表的数据时,同时在t_s_attachment父表中也插入一条记录,两表之间通过id关联(两表的id相同)。

1.TSAttachment实体

@Entity
@Table(name = "t_s_attachment")
@Inheritance(strategy = InheritanceType.JOINED)
public  class TSAttachment  implements java.io.Serializable {
private String id;
private Integer userId;
@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
@Column(name ="ID",nullable=false,length=32)
public String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
@Column(name ="ID")
public Integer getUserId() {
return userId;
}
 
public void setUserId(Integer userId) {
this.userId = userId;
}
}


2.cgform_uploadfiles实体

@Entity
@Table(name = "cgform_uploadfiles", schema = "")
@PrimaryKeyJoinColumn(name = "id")
@SuppressWarnings("serial")
public class CgUploadEntity extends TSAttachment implementsjava.io.Serializable{
private String name;
@Column(name ="name")
public String getName() {
return name;
}
public void setCgformId(String name) {
this.name = name;
}

}


总结:在保存TSAttachment实体对象的时候,上面两个实体的id值一样,都是都uuid自动生成。这很像一对一关联,但不同的是在CgUploadEntity实体对象中可以直接对TSAttachment实体对象的属性进行赋值和获取,很方便!

本文地址:http://yayihouse.com/yayishuwu/chapter/1036


8

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交