使用S2SH集成做登陆时,根据username和userpwd去对应的employee表中查询是否有对应记录,我使用的方法是getHibernateTemplate().find(hql, object[]),但是我在debug查询时,发现hibernate执行的语句是这样的:
Hibernate: select employee0_.eid as eid15_, employee0_.username as username15_, employee0_.realname as realname15_, employee0_.userpwd as userpwd15_, employee0_.email as email15_, employee0_.sex as sex15_, employee0_.oid as oid15_, employee0_.did as did15_ from myprj.tb_employee employee0_ where employee0_.username=? and employee0_.userpwd=?
Hibernate: select organise0_.oid as oid17_0_, organise0_.organame as organame17_0_ from myprj.tb_organise organise0_ where organise0_.oid=?
Hibernate: select duty0_.did as did16_0_, duty0_.dname as dname16_0_ from myprj.tb_duty duty0_ where duty0_.did=?
Hibernate: insert into myprj.tb_organise (organame) values (?)
Hibernate: update myprj.tb_employee set username=?, realname=?, userpwd=?, email=?, sex=?, oid=?, did=? where eid=?
居然执行了insert语句,这里的tb_organise表中的oid和tb_duty表中的did是tb_employee表的外键,duty是正常的,但是为什么在organise表中会插入一条记录,且对应的employee的oid会指向新插入的这条记录。相关配置如下,还希望大家帮我分析下是什么原因?这是我的employee的映射文件  <many-to-one name="duty"  class="net.gicp.xhf1989.MyPrj.pojo.Duty" column="did"  lazy="false" cascade="save-update">
         </many-to-one>
        <many-to-one name="organise" class="net.gicp.xhf1989.MyPrj.pojo.Organise" column="oid" lazy="false" cascade="save-update">
        </many-to-one>这是organise对应的配置
<hibernate-mapping>
    <class name="net.gicp.MyPrj.pojo.Organise" table="tb_organise" catalog="myprj">
        <id name="orgaId" type="java.lang.Integer">
            <column name="oid" />
            <generator class="native" />
        </id>
        <property name="orgaName" type="java.lang.String">
            <column name="organame" length="45"/>
        </property>
    </class>
</hibernate-mapping>我验证的方法:/**
 * 验证登录
 * @param sql
 * @param o
 * @return
 */
public List doLogin(String sql,Object[] o)
{
return this.getHibernateTemplate().find(sql, o);
}
employee的表设计如下:
大家帮我分析下呢,谢谢啦