休眠一对一映射。从依赖表中删除行 [英] Hibernate one to one mapping. Delete row from dependent table

查看:0
本文介绍了休眠一对一映射。从依赖表中删除行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

表:学生、地址 Student.ADDR_ID列映射到Address.ID

我的学生课堂上的注释如下

public class Student {

String name, surname;
int rollNumber;
Teacher classTeacher;
Address address;

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="ADDR_ID")
public Address getAddress() {
    return address;
}
:
:

在创建和更新案例时运行良好。

如果我将学生的地址更改为新的,则会创建一个新行,但不会删除旧地址的行。 如果仍将地址设置为空,则不会删除

例如

 Student s1 = session.get(Student.class, 24);
 Address addr = new Address();
 session.save(addr);
 s1.setAddress(addr);
 session.save(s1);

 or

 Student s1 = session.get(Student.class, 24);
 s1.setAddress(null);

我已将CASCADE ALL设置。需要做哪些额外的/不同的工作。反转是否适用于此?

推荐答案

如果满足需要,您应该使用orphanremoval = true

@OneToOne(cascade=CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="ADDR_ID")
public Address getAddress() {
}

这篇关于休眠一对一映射。从依赖表中删除行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆