您的位置:首页 > 其它

@ManyToOne与@OneToMany

2016-06-19 17:09 309 查看
本节演示多对一与一对多的注解实现。

案例为系统与菜单关系:

系统–>菜单:一对多

菜单–>系统:多对一

SysSystem.java

@Entity
@Table(name="SysSystem")
public class SysSystem implements Serializable{
private static final long serialVersionUID = 1L;

private Integer id;
private List<SysMenu> menus;

/*
*系统与菜单的关系:一对多,所以是OneToMany
*系统:本实体类的代表事物
*菜单:实体类中的属性的抽象
* mappedBy指明关系维护方是多方,也就是SysMenu
* 为什么值是system:system是SysMenu类的一个属性
* mappedBy整个含义本人理解:menus的映射关系,在SysMenu的system属性映射体现
* 若希望实现单项关联,这里完全可以删掉menus属性,只在SysMenu中指定ManyToOne
*/
@OneToMany(mappedBy="system")
public List<SysMenu> getMenus() {
return menus;
}
public void setMenus(List<SysMenu> menus) {
this.menus = menus;
}
public SysSystem() {
}
@Id
@Column(name="systemId")
@GeneratedValue(strategy=GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}


SysMenu.java

@Entity
@Table(name="SystemMenu")
public class SysMenu implements Serializable{
private static final long serialVersionUID = 1L;
/** 主键  **/
private Integer id;
/** 系统id **/
private SysSystem system;

@Id
@Column(name="menuId")
@GeneratedValue(strategy=GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
/*
*关系的判断:类名-->属性  所代表的概念的关系
*菜单与系统的关系:多对一,所以是ManyToOne
*@JoinCloumn
*name:菜单表的外键字段名
*referencedColumnName:引用的外键字段名,即引用了系统表中的哪个字段作为外键。
*注意:哪一个实体映射出现了JoinColumn说明哪一个实体维护关系
*/
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="systemId",referencedColumnName="systemId")
public SysSystem getSystem() {
return system;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  一对多 多对一