设为首页 加入收藏

TOP

Hibernate多对多关系中间表有其他属性的配置方式
2014-11-24 14:28:22 来源: 作者: 【 】 浏览:0
Tags:Hibernate 关系 中间 其他 属性 配置 方式

一、需求原因


在我做系统架构时遇到情况是这样:资源菜单实体类(Resource)和角色实体类(Role)是多对多关系,需要各个角色可以个性化自己的资源菜单顺序。


二、设计理念


多对多的关系拆分为两个一对多


三、具体配置


方式一:XML方式


Role实体


public class Role implements Serializable {


/*ID*/


privateLong id;


/*名称*/


privateString name;


/*与RoleResource的一对多关系*/


PrivateSet roleResources= new HashSet();


//get set


}


Resource实体


public class Resource implements Serializable {


/*ID*/


privateLong id;


/*名称*/


privateString name;


/*与RoleResource的一对多关系*/


privateSet roleResources = new HashSet();


// getset


}


RoleResource辅助实体


public class RoleResource implements Serializable{


/*ID*/


privateLong id;


/*与Role的多对一关系*/


privateRole role;


/*与Resource的多对一关系*/


privateResource resource;


/*排序字段*/


privateInteger sort;


// getset


}


Role.hbm.xml















Resource.hbm.xml















RoleResource.hbm.xml














Hibernate.cfg.xml中配置





方式二:Annotation方式


Role实体


@Entity


@Table(name="glw_role")


public class Role {


@Id


@GeneratedValue(strategy=GenerationType.TABLE)


privateLong id;


@Column(length=50)


privateString name;


@OneToMany(mappedBy="role",cascade=CascadeType.ALL)


privateSet roleResources = new HashSet();


//get set


}


Resource实体


@Entity


@Table(name="glw_resource")


public class Resource {


@Id


@GeneratedValue(strategy=GenerationType.TABLE)


privateLong id;


@Column(length=50)


privateString name;


@OneToMany(mappedBy="resource",cascade=CascadeType.ALL)


privateSet roleResources = new HashSet();


// getset


}


RoleResource辅助实体


@Entity


@Table(name="glw_role_resource")


public class RoleResource {


@Id


@GeneratedValue(strategy=GenerationType.TABLE)


privateLong id;


@Column


privateInteger sort;


@ManyToOne(cascade=CascadeType.ALL)


@JoinColumn(name="roleId",nullable=true)


privateRole role;


@ManyToOne(cascade=CascadeType.ALL)


@JoinColumn(name="resourceId",nullable=true)


privateResource resource;


// getset


}


Hibernate.cfg.xml中配置





四、完毕


Xml和Annotation方式可任意选取一种,以上本人均测试通过。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇jQuery中blur和focus事件的应用 下一篇jQuery中的getJSON方法请求的接口..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: