关于Hibernate的一对多保存的问题?

关于Hibernate的一对多保存的问题?
这是pojos:
/** */ /**
 * 
 * 
@author 袁晓江
 * @hibernate.class table="t_organization"
 *
 
*/

public   class  Organization  {
    
/** *//**
     * @hibernate.id
     *         generator-class="native"
     
*/

    
private int id;
    
/** *//**
     * @hibernate.property
     
*/

    
private String name;
    
/** *//**
     * @hibernate.property
     
*/

    
private String sn;//编号
    /** *//**
     * @hibernate.property
     
*/

    
private String description;
    
/** *//**
     * @hibernate.many-to-one
     *             column="pid" not-found="ignore"
     
*/

    
private Organization parent;
    
//invserse=true让多的一方维护一的那一方。
    /** *//**
     * @hibernate.set inverse="true"
     * @hibernate.key column="pid"
     * @hibernate.one-to-many 
     *                 class="com.oa.model.Organization"
     
*/

    
private Set<Organization> children;


附上Organization.hbm.xml的配置文件:
<? xml version="1.0" encoding="utf-8" ?>
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

< hibernate-mapping >
  
< class  table ="t_organization"  name ="com.oa.model.Organization" >
    
< id  access ="field"  name ="id" >
      
< generator  class ="native" />
    
</ id >
    
< property  name ="name"  access ="field" />
    
< property  name ="sn"  access ="field" />
    
< property  name ="description"  access ="field" />
    
    
< many-to-one  not-found ="ignore"  column ="pid"  access ="field"  name ="parent" />
    
    
<!--  inverse="true"的时候  把每个孩子放到父亲里的时候,会不存在pid的值  -->
    
< set  access ="field"  name ="children"  inverse ="true" >
      
< key  column ="pid" />
      
< one-to-many  class ="com.oa.model.Organization" />
    
</ set >
    
  
</ class >
</ hibernate-mapping >

--------------------------------------------
这里我放了inverse="true"
--------------------------------------------

这里是我的测试方法:
public   class  OrgTest2  extends  TestCase  {
    
public void testOrg(){
        Session session 
= HibernateUtils.getSession();
        session.beginTransaction();
        Set set 
= new HashSet();
        
        Organization org2 
= new Organization();
        org2.setName(
"org2");
        set.add(org2);
        
        Organization org3 
= new Organization();
        org3.setName(
"org3");
        set.add(org3);
//        
        Organization org4 = new Organization();
        org4.setName(
"org4");
        set.add(org4);
//        
        Organization org1 = new Organization();
        org1.setName(
"org1");
        org1.setChildren(set);
        
        session.save(org1);
        session.save(org2);
        session.save(org3);
        session.save(org4);

        session.beginTransaction().commit();
    }


存在这样的一个问题:
就是org2,org3,org4.不能正确的保存到数据库里。
也就是org2,org3,org4的pid的值都是空。
我仔细查了下原因是inverse="true"造成的
可是我没有明白到底是怎么回事.?
有人知道为什么么?
让多的这方去维护.

你可能感兴趣的:(关于Hibernate的一对多保存的问题?)