@ManyToOne与@OneToMany

来源:互联网 发布:大乐透蓝球计算法 编辑:程序博客网 时间:2024/05/10 08:32

本节演示多对一与一对多的注解实现。
案例为系统与菜单关系:
系统–>菜单:一对多
菜单–>系统:多对一
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;    }}
0 0
原创粉丝点击