当删除用户记录时,我想删除rfid记录,当删除rfid记录时不想删除用户记录,只有一个rfid允许用于一个用户(一对一关系)也不需要存储rfid记录id在用户记录中。如何实现这一目标?
用户实体:
@Entity()
@NoArgsConstructor
@AllArgsConstructor
@Data
@Table(name = "users")
public class User {
@Id()
@Column(columnDefinition = "serial")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Access(AccessType.PROPERTY)
private int id;
@Size(max=200, min=5, message = "Username must be between 5 and 200 characters")
@Column(unique = true, nullable = false, length = 200)
private String username;
@Column(nullable = false, columnDefinition = "text")
private String passwordHash;
@ManyToMany(fetch = FetchType.EAGER)
private Set<UserRole> roles = new HashSet<>();
// eml or phn
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private AuthTypes authType;
}
RFID实体:
@Entity()
@NoArgsConstructor
@AllArgsConstructor
@Data
@Table(name = "rfid")
public class RFID {
@Id()
@Column(columnDefinition = "serial")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Size(max=200,min = 10, message = "RFID must be between 10 and 200 characters")
@Column(columnDefinition = "text", nullable = false, unique = true)
private String rfid;
@OneToOne(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", referencedColumnName = "id",nullable = false,unique = true)
private User user;
@CreatedDate
@CreationTimestamp
@Column(name = "created_at", updatable = false)
private Date createdAt;
@LastModifiedDate
@Column(name = "updated_at")
private Date updatedAt;
}
没有在用户表中存储rfid记录我想在删除用户记录时删除rfid
我找到了解决办法:
RFID实体:
@Entity()
@NoArgsConstructor
@AllArgsConstructor
@Data
@Table(name = "rfid")
public class RFID {
@Id()
@Column(columnDefinition = "serial")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Size(max=200,min = 10, message = "RFID must be between 10 and 200 characters")
@Column(columnDefinition = "text", nullable = false, unique = true)
private String rfid;
@OneToOne()
@JoinColumn(name = "user_id")
private User user;
@CreatedDate
@CreationTimestamp
@Column(name = "created_at", updatable = false)
private Date createdAt;
@LastModifiedDate
@Column(name = "updated_at")
private Date updatedAt;
}
用户实体:
@Entity()
@NoArgsConstructor
@AllArgsConstructor
@Data
@Table(name = "users")
public class User {
@Id()
@Column(columnDefinition = "serial")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Access(AccessType.PROPERTY)
private int id;
@Size(max=200, min=5, message = "Username must be between 5 and 200 characters")
@Column(unique = true, nullable = false, length = 200)
private String username;
@Column(nullable = false, columnDefinition = "text")
private String passwordHash;
@ManyToMany(fetch = FetchType.EAGER)
private Set<UserRole> roles = new HashSet<>();
@OneToOne(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY, mappedBy = "user")
private RFID rfid;
// eml or phn
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private AuthTypes authType;
}