六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 37|回复: 0

关于Hibernate级联关系手记

[复制链接]

升级  0.67%

13

主题

13

主题

13

主题

秀才

Rank: 2

积分
51
 楼主| 发表于 2013-1-28 19:09:57 | 显示全部楼层 |阅读模式
Os与OsFeature为一对多关系(OneToMany)
Os:
private Long osId;
.
.
.
private Set<OsFeature> osFeatures = new HashSet<OsFeature>();

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="OsId", unique = true, nullable = false, insertable = true, updatable = true)
public Long getOsId()
{
return osId;
}
...
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "os")
public Set<OsFeature> getOsFeatures()
{
  return osFeatures;
}
...

OsFeature:
private Os os;
.
.
.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OsId", referencedColumnName = "OsId", unique = false, nullable = false, insertable = true, updatable = true)
public Os getOs()
{
  return os;
}
...

注意:OsFeature里面的referencedColumnName,它表示多对一中一方的主键
如果不加该属性,在程序中,如果是保存一方Os的话,保存成功,但是在Os对应的表中会保存多次,即:os中关联多少个osFeature,os就会保存多少次,加上referencedColumnName属性后,一切正常
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表