映射文件:user
<hibernate-mapping>
    <class name="com.cui.beans.Event" table="event">
        <id name="eid" type="integer">
            <column name="eid" />
            <generator class="native" />
        </id>
        <many-to-one name="user" class="com.cui.beans.User" fetch="select">
            <column name="u_id" />
        </many-to-one>
        <property name="title" type="string">
            <column name="title" length="40" />
        </property>
        <property name="content" type="string">
            <column name="content" length="1000" />
        </property>
        <property name="eventDate" type="date">
            <column name="event_date" length="0" />
        </property>
    </class>
</hibernate-mapping>event:
<hibernate-mapping>
    <class name="com.cui.beans.Event" table="event">
        <id name="eid" type="integer">
            <column name="eid" />
            <generator class="native" />
        </id>
        <many-to-one name="user" class="com.cui.beans.User" fetch="select">
            <column name="u_id" />
        </many-to-one>
        <property name="title" type="string">
            <column name="title" length="40" />
        </property>
        <property name="content" type="string">
            <column name="content" length="1000" />
        </property>
        <property name="eventDate" type="date">
            <column name="event_date" length="0" />
        </property>
    </class>
</hibernate-mapping>

解决方案 »

  1.   

    这是user的,上面搞错了汗...
    <hibernate-mapping>
        <class name="com.cui.beans.User" table="user">
            <id name="uid" type="integer">
                <column name="uid" />
                <generator class="native" />
            </id>
            <property name="username" type="string">
                <column name="username" length="20" />
            </property>
            <property name="password" type="string">
                <column name="password" length="20" />
            </property>
            <property name="age" type="integer">
                <column name="age" />
            </property>
            <property name="email" type="string">
                <column name="email" length="20" />
            </property>
            <set name="events" inverse="true" cascade="all">
                <key>
                    <column name="u_id" />
                </key>
                <one-to-many class="com.cui.beans.Event" />
            </set>
        </class>
    </hibernate-mapping>
      

  2.   

    UserDAO ud=new UserDAO(); 
    User user=ud.findById(uid); 
    user.setEvents(events); 
    //加一句 就OK啦
    events.setUser(user);或者将你的inverse="false" 也应该可以.
    建议用第一种方法。
      

  3.   

    不行啊,我的events是一个集合类型,没有setUser()方法的.
    刚开始我没做user那块,以为是级联更新所以没做,可是不能添加uid,我又特意在user里把event添加了下;
    怪了,我event.getU_id()能拿到uid啊,难道是我从表的u_id和主表uid不一样缘故吗?
    两个表的字段名不需要一样也可以吧?我用测试类可以正确添加啊,到着不知道怎么了就不行了.
    下面是控制台打印信息:Hibernate: select user0_.uid as uid0_, user0_.username as username0_, user0_.password as password0_, user0_.age as age0_, user0_.email as email0_ from user user0_
    1
    add event:1
    Hibernate: insert into event (u_id, title, content, event_date) values (?, ?, ?, ?)
    1
    add event:1
    Hibernate: select user0_.uid as uid0_0_, user0_.username as username0_0_, user0_.password as password0_0_, user0_.age as age0_0_, user0_.email as email0_0_ from user user0_ where user0_.uid=?
    Hibernate: insert into event (u_id, title, content, event_date) values (?, ?, ?, ?)
      

  4.   

    问题解决了,通过Event类的user属性设置关联,这样可以得到对应的uid.但是直接通过设置Event类里的u_id属性却不性,不知道为什么.
    当我建立映射时,自动生成的event类带有user属性,而u_id属性是我自己加的可是不行,不知道为啥...