说说我要求的效果
现有两张表
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>需要怎么处理能达到上述效果。谢谢大家~!
现有两张表
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>需要怎么处理能达到上述效果。谢谢大家~!
表A存在一外键关联表B
当对表A进行插入或更新时,不影响B。同样操作B也不影响A;
查询A时,同时得到B的信息----------------------------------------------------
今天是周一吧!不是周日,怎么竟做梦呀。
当对表A进行插入或更新时,不影响B。同样操作B也不影响A?
设置inverse ="true"
你在保存A的时候Set blist不设置就行啦嘛。同样保存b时候不设置a就行
A中有B的外键,也就是 a中包含一个对象b.
不要设置任何级联操作的许可就可以了。
所谓的影响,只有在级联操作的时候,而不是维护关系,胸胸童鞋。
再描述次。
1.当表B中没有数据,向表A插入数据,外键为空或其他字符
2.当表A有数据关联到表B的情况,更新表A外键为空
我就是想实现这两种情况。例如:员工与岗位的关系。
员工可以没有岗位,这个怎么实现。上面贴的代码是我目前正在使用的。
请大家帮帮忙。
2.当表A有数据关联到表B的情况,更新表A外键。只要你将B set到A里面,并且保证B的主键不为NULL就可以了。 这是在B存在的情况下。