TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
1,对于多方:
更改Jd.java
去掉与一方对应的外键属性qxid;
更改Jd.xml
去掉qxid的配置
<!--
<property name="qxid" type="java.lang.Integer">
<column name="qxid" not-null="true" />
</property>
-->
添加
<many-to-one name="qx" class="com.zhangjie.hib.entity.manytoone.Qx" column="qxid" lazy="false" cascade="save-update">
name是指属性Jd的属性qx;column属性定义了映射到表TBL_JD的字段名,将使用这个字段作为外键去和"一"的一方主键关联;class属性为关联到“一”的一方的类;cascade=save-update是级联保存和更新;lazy=false支持级联查询。
2,对于一方
不需要修改
3,级联查询代码:
/**
* 可以在session没有关闭的情况下,查询级联信息是可以的
*
*/
@Test
public void test2(){
Session session = HibernateSessionFactory.getSession();
Jd jd = (Jd)session.get(Jd.class, 20);
//显示多方的一个信息
System.out.println(jd.getJd());
//显示一方信息(测试包括在lazy=true,proxy的情况下)
System.out.println(jd.getQx().getQx());
session.close();
}
/**
* 在session关闭的情况下,并且lazy=proxy的情况下,是不可以访问级联信息的
*如果在lazy=false的情况下,会自动先查询级联信息
*/
@Test
public void test3(){
Session session = HibernateSessionFactory.getSession();
Jd jd = (Jd)session.get(Jd.class, 20);
//显示多方的一个信息
System.out.println(jd.getJd());
session.close();
//显示一方信息(测试包括在lazy=true,proxy的情况下)
System.out.println(jd.getQx().getQx());
}
4,级联保存:
/**
* 单独保存Jd
*
*/
@Test
public void test4(){
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
Jd jd = new Jd();
jd.setJd("娄星区 ");
Qx qx = new Qx();
qx.setQxid(1);
jd.setQx(qx);
session.save(jd);
tx.commit();
session.close();
}
/**
* cascade的值为none和true的条件下来试一下程序
*
*/
@Test
public void test5(){
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction();
Jd jd = new Jd();
jd.setJd("娄星区2");
Qx qx = new Qx();
qx.setQx("娄底市");
jd.setQx(qx); //级联保存
session.save(jd);
tx.commit();
session.close();
}
|
|