说说我要求的效果
现有两张表
A   B
表A存在一外键关联表B
当对表A进行插入或更新时,不影响B。同样操作B也不影响A;
查询A时,同时得到B的信息。下面是代码:
User.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">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping package="com.synutra.elt.vo.users">
    <class name="Users" table="lzx_users" >
        <id name="userId"  >
            <column name="user_id" length="255"/>
            <generator class="assigned" />
        </id>
        <many-to-one name="roles" class="com.synutra.elt.vo.roles.Roles" lazy="false" fetch="join" >
            <column name="role_id"/>
        </many-to-one>
        <many-to-one name="groups" class="com.synutra.elt.vo.groups.Groups" lazy="false" fetch="join" >
            <column name="group_id" />
        </many-to-one>
        <many-to-one name="classes" class="com.synutra.elt.vo.classes.Classes" lazy="false" fetch="join" >
            <column name="class_id" />
        </many-to-one>
        <many-to-one name="positions" class="com.synutra.elt.vo.positions.Positions" lazy="false" fetch="join" >
            <column name="position_id" />
        </many-to-one>
        <many-to-one name="companys" class="com.synutra.elt.vo.companys.Companys" lazy="false" fetch="join">
            <column name="company_id" />
        </many-to-one>
        <property name="password">
            <column name="user_password" />
        </property>
        <set name="userExams" table="lzx_user_exam" cascade="delete">
            <key>
                <column name="user_id" length="32" not-null="true" />
            </key>
            <many-to-many class="com.synutra.elt.vo.exams.Exams" column="exam_id"></many-to-many>
        </set>
    </class>
</hibernate-mapping>positions.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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping package="com.synutra.elt.vo.positions">
<class name="Positions" table="lzx_positions">
<id name="positionId">
<column name="position_id" length="32" />
<generator class="uuid" />
</id>
<property name="positionName">
<column name="position_name" />
</property>
<many-to-one name="companys" class="com.synutra.elt.vo.companys.Companys">
<column name="company_id" length="32" />
</many-to-one>
<set name="userses" inverse="true" cascade="none">
<key>
<column name="position_id" length="32" />
</key>
<one-to-many class="com.synutra.elt.vo.users.Users" />
</set>
</class>
</hibernate-mapping>需要怎么处理能达到上述效果。谢谢大家~!

解决方案 »

  1.   

    A  B 
    表A存在一外键关联表B 
    当对表A进行插入或更新时,不影响B。同样操作B也不影响A; 
    查询A时,同时得到B的信息----------------------------------------------------
    今天是周一吧!不是周日,怎么竟做梦呀。
      

  2.   

    <many-to-one name="positions" class="com.synutra.elt.vo.positions.Positions" column="position_id" update="false" insert="false" not-found="ignore"/>
      

  3.   

    表A存在一外键关联表B 
    当对表A进行插入或更新时,不影响B。同样操作B也不影响A?
    设置inverse ="true"
    你在保存A的时候Set blist不设置就行啦嘛。同样保存b时候不设置a就行
      

  4.   

    首先楼主做关联了么?如果是下面这样,
    A中有B的外键,也就是 a中包含一个对象b.
    不要设置任何级联操作的许可就可以了。
    所谓的影响,只有在级联操作的时候,而不是维护关系,胸胸童鞋。
      

  5.   

    谢谢楼上各位朋友,我可能没描述清楚。
    再描述次。
    1.当表B中没有数据,向表A插入数据,外键为空或其他字符
    2.当表A有数据关联到表B的情况,更新表A外键为空
    我就是想实现这两种情况。例如:员工与岗位的关系。
    员工可以没有岗位,这个怎么实现。上面贴的代码是我目前正在使用的。
    请大家帮帮忙。
      

  6.   

    你要删除数据库中建立的表与表之间的关系,只在hibernate中建立关联关系,外键可以为空,不级联更新。
    2.当表A有数据关联到表B的情况,更新表A外键。只要你将B set到A里面,并且保证B的主键不为NULL就可以了。 这是在B存在的情况下。
      

  7.   

    首先说下你的思考问题的方法不能太抽象,是员工但是却没有岗位,你觉的行的通吗?之所以成为员工是因为他在岗!在岗就业你懂吧,没有岗位就不是员工!我认为问题不是出在Hibernate上,而是出在你的思维上,好好考虑,如果思维上没问题了就考虑下级联问题cascade!