`

组织机构的树型MODEL方法(多对一,一对多的双向关联)

阅读更多

//下面两个设置只会在数据库中生成一个字段,即pid且其类型是和ID一样的,也就是INT类型

/**
* 指向父机构
* @hibernate.many-to-one column="pid"
*/
private Orgnization org;
/**旗下子机构的集合
* @hibernate.set inverse="true"
* @hibernate.key column="pid"
* @hibernate.one-to-many class="com.cjmiou.oa.model.Orgnization"
*/
private Set children;

上面的column必须显式设置一致才能起到效果,生成的配置文件如下所示

  1. <many-to-onecolumn="pid"name="org"/>
  2. <setname="children"inverse="true">
  3. <keycolumn="pid"/>
  4. <one-to-manyclass="com.cjmiou.oa.model.Orgnization"/>
  5. </set>

在多对一(可能一对多也要)的情况下,一般在set处将inverse属性设为true,

如果不设置这个属性,在更新父结点的一些属性时,有可能会将该节点与子节点的关系破坏掉,如果设置了,就不会了,

并且设置了这个属性后,维护时(如保存等)就只能从子结点之一端来,而不能从父这一端来维护了

对应的员工MODEL一方,如下

/**
* @hibernate.many-to-one
*/
private Orgnization org;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics