//下面两个设置只会在数据库中生成一个字段,即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必须显式设置一致才能起到效果,生成的配置文件如下所示
- <many-to-onecolumn="pid"name="org"/>
- <setname="children"inverse="true">
- <keycolumn="pid"/>
- <one-to-manyclass="com.cjmiou.oa.model.Orgnization"/>
- </set>
在多对一(可能一对多也要)的情况下,一般在set处将inverse属性设为true,
如果不设置这个属性,在更新父结点的一些属性时,有可能会将该节点与子节点的关系破坏掉,如果设置了,就不会了,
并且设置了这个属性后,维护时(如保存等)就只能从子结点之一端来,而不能从父这一端来维护了
对应的员工MODEL一方,如下
/**
* @hibernate.many-to-one
*/
private Orgnization org;