首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从用户表中删除地址的外键?

问如何从用户表中删除地址的外键?
EN

Stack Overflow用户
提问于 2022-03-15 16:32:14
回答 3查看 57关注 0票数 0

我的用户与我的地址表有一对一的映射,它在用户表中有一个地址的外键。我想删除用户地址而不删除我的用户,但是由于我在user表中有外键,所以我无法这样做,请帮助我出在这里输入图像描述。

@表(名称=“地址”)公共类地址{

代码语言:javascript
复制
@Id
@GeneratedValue 
private Integer addressId;

@NotNull(message="City should not be null")
@Pattern(regexp="^[a-zA-Z]+$" ,message="City should contain only alphabets")
private String city;

@NotNull(message="State should not be null")
@Pattern(regexp="^[a-zA-Z]+$" ,message="State should contain only alphabets")
private String state;

@NotNull(message="Pincode should not be null")
@Size(min=6,max=6,message = "Size must be of 6 elements")
@Pattern(regexp="\\d+", message = "Pincode must contain only numbers")
private String pinCode;

@NotNull(message="House number should not be null")
@Pattern(regexp="\\d+", message = "Pincode must contain only numbers")
private String houseNo;

@NotNull(message="Landmark should not be null")
private String landmark;

我的用户类

代码语言:javascript
复制
@Entity

@Table(name = "UserDetails")公共类用户{ public enum角色{ADMIN,USER}; @Id @GeneratedValue私有整数userId;

代码语言:javascript
复制
@NotNull(message = "Firstname should not be null")
@Pattern(regexp="^[a-zA-Z '.-]*$", message = "Name should be alphabetic")
private String firstName;

@NotNull(message = "Firstname should not be null")
@Pattern(regexp="^[a-zA-Z '.-]*$", message = "Name should be alphabetic")
private String lastName;

@Email
private String email;

private String password;
private Role role;

@OneToOne(cascade = CascadeType.ALL)
private Address address;

@OneToMany(mappedBy = "userDetails", cascade = CascadeType.ALL)
private Set<Order> orders = new HashSet<Order>();
private Address address;

@OneToMany(mappedBy = "userDetails", cascade = CascadeType.ALL)
private Set<Order> orders = new HashSet<Order>();
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-03-15 16:53:29

为了安全起见,尝试添加orphanRemoval=true。

代码语言:javascript
复制
@OneToOne(cascade = CascadeType.ALL, orphanRemoval=true)
private Address address;

然后,您应该能够通过将字段的值设置为null来删除地址,例如:

代码语言:javascript
复制
User user = userRepository.getById(1);
user.setAddress(null);
userRepository.save(user);
票数 0
EN

Stack Overflow用户

发布于 2022-03-15 16:44:30

坚持没用吗?如果你想看看这里。

代码语言:javascript
复制
@OneToOne(cascade = CascadeType.PERSIST)
private Address address;
票数 0
EN

Stack Overflow用户

发布于 2022-03-15 18:46:08

您收到的错误消息是什么?在数据库级别,您的外键“”选项也需要设置。

对delete设置null

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71485733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档