【发布时间】:2021-10-09 11:05:57
【问题描述】:
我有两个模型(用户和 RefreshToken)。当我尝试通过 API 删除用户时,我收到此错误:
(id)=(5) 仍然从表“refreshtoken”中引用
这是我的User 模型:
@Entity
@Table( name = "users",
uniqueConstraints = {
@UniqueConstraint(columnNames = "username"),
@UniqueConstraint(columnNames = "email")
})
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Size(max = 20)
private String username;
@NotBlank
@Size(max = 50)
@Email
private String email;
@NotBlank
@Size(max = 120)
private String password;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable( name = "user_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<>();
这是我的refreshToken 模型:
@Entity(name = "refreshtoken")
public class RefreshToken {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToOne
@JoinColumn(name = "user_id", referencedColumnName = "id")
private User user;
@Column(nullable = false, unique = true)
private String token;
@Column(nullable = false)
private Instant expiryDate;
//getters and setters
当我想删除一个用户时,我希望在数据库中也删除属于该用户的刷新令牌。我搜索并发现我应该使用 cascade 或 orphanRemoval 但我不明白如何在这里使用它们。
如果有人能提供帮助,我将不胜感激。
【问题讨论】:
标签: java jpa orm one-to-one refresh-token