论坛首页 Java企业应用论坛

三连关系怎么处理

浏览 4390 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-09-15  
比如:用户、组织、用户组织关系 三个表

User.hbm.xml

<hibernate-mapping>
  <class name="User" table="User">
     <id name="id" >
        <generator class="native"/>
     </id>
</class>
<map name="places" lazy="true">
<key column="id"/>
<index-many-to-many column="id" class="Org"/>
<one-to-many column="user_id" class="User2Org"/>
</map>
</hibernate-mapping>
////////////////////////////////////////////////
Org.hbm.xml

<hibernate-mapping>
  <class name="Org" table="Org">
     <id name="id" >
        <generator class="native"/>
     </id>
</class>
<map name="places" lazy="true">
<key column="id"/>
<index-many-to-many column="id" class="User"/>
<one-to-many column="org_id" class="User2Org"/>
</map>
</hibernate-mapping>
///////////////////////////////////////////////
User2Org.hbm.xml

<hibernate-mapping>
  <class name="User2Org" table="User2Org">
     <id name="id" >
        <generator class="native"/>
     </id>
     <property name="user_id"/>
     <property name="org_id"/>
  </class>
</hibernate-mapping>

数据里设置了User2Org的两个外键(user_id和org_id)
///////////////////////////////////////
import java.uti.List;
public class User {
    private int id;
    private List places;
    public User() {
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
  public List getPlaces() {
    return places;
  }
  public void setPlaces(List places) {
    this.places = places;
  }
}
/////////////////////////////////
import java.uti.List;
public class Org {
    private int id;
    private List places;
    public User() {
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
  public List getPlaces() {
    return places;
  }
  public void setPlaces(List places) {
    this.places = places;
  }
}
//////////////////////////////////
public class User2Org {
    private int id;
    private int user_id;
    private int org_id;

    public User() {
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getUser_id() {
     return user_id;
    }
    public void setUser_id(int user_id) {
     this.user_id = user_id;
    }
    public int getOrg_id() {
     return org_id;
    }
    public void setOrg_id(int org_id) {
     this.org_id = org_id;
    }
}

请教我这错在哪里?运行时报把column的类型变成one-to-many!这是怎么回事!
   发表时间:2003-09-15  
这不是一个典型的many-to-many吗?
为什么要映射成三重关联呢?
0 请登录后投票
   发表时间:2003-09-16  
好像参考手册上有提到,把多对多转化为三连关系。

但我不清楚怎么配置这种关系。

好像知道怎么回事了。

是把面向对象和面向关系搞混了。
0 请登录后投票
   发表时间:2004-01-12  
中间连接的哪个表是在建表的时候根据你在配置文件里设置的管理生成的,你不需要为它两外在创建一个实体,他对于用户来说是透明的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics