When delete User record, I want to delete rfid record And when deleting rfid record not want to delete user record , only one rfid allow to use for one user (one to one relationship) also i don’t need to store rfid record id in user record. how to achieve this?
User Entity:
<code>@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;
}
</code>
<code>@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;
}
</code>
@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:
<code>@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;
}
</code>
<code>@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;
}
</code>
@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;
}
without storing rfid record in the user table I want to delete rfid when deleting user record