posts - 20,comments - 6,trackbacks - 0
这是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"造成的
可是我没有明白到底是怎么回事.?
有人知道为什么么?
让多的这方去维护.
posted on 2009-03-04 15:58 Johnhe 阅读(2076) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: