hibernate的1对1关系

首先主表中要有从表的属性,从表中有主表的属性:

主表的hbm.xml:

<class name="com.entity.user" table="USER">
        <id name="id" type="java.lang.String">
            <column name="ID" />
            <generator class="com.generator.MyGenerator" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="pwd" type="java.lang.String">
            <column name="PWD" />
        </property>
        <one-to-one name="card" class="com.entity.card"  cascade="all-delete-orphan"></one-to-one>
</class>

从表的hbm.xml:

<class name="com.entity.card" table="CARD">
        <id name="uid" type="java.lang.String">
            <column name="UID" />
            <generator class="foreign" >
            <param name="property">user</param>
            </generator>
        </id>
        <property name="cname" type="java.lang.String">
            <column name="CNAME" />
        </property>
        <one-to-one name="user" class="com.entity.user"></one-to-one>
</class>

并且两张表的id要是同一个id,我的两张表都是uid,如果不是同个id,是无法两张表同时删除的

然后是调用的代码(增加):

@Test
	public void OneToOne1() {
		user u=new user();
		u.setName("lm");
		u.setPwd("afdsa");
		card c1=new card();
		c1.setCname("231");
		u.setC(c1);
		c1.setU(u);
		session.save(u);
	}

然后是调用的代码(删除):

@Test
	public void OneToOne2() {
		user u=new user();
		u.setId("2ad9bdb8-adf1-11e8-83cc-54e1ad4df251");
		card c=new card();
		c.setUid("2ad9bdb8-adf1-11e8-83cc-54e1ad4df251");
		u.setC(c);
		c.setU(u);
		session.delete(u);
	}

以上就是全部内容了

猜你喜欢

转载自blog.csdn.net/wff900703/article/details/82561278