我正在设计一个简单的Spring Boot应用程序。基本上是图书馆。域如下所示: 一个库可以有许多用户分配给它。 图书馆也有书。 如果要删除一本书,我们会收到该书的ID以及希望删除它的用户。 然后,我们需要检查该书是否在Users库中。只有这样才能将其删除。
我用Java解决了这个问题,但是琐碎,我意识到这种解决方案远非最佳。
要求该程序仅接收用户实体和书籍ID。我们要验证用户是否有权删除这本书。
图书馆
@Entity
@Table(name = "library")
public class Library {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Size(max = 100)
private String name;
@OneToMany(mappedBy = "library", cascade = CascadeType.ALL)
private Set<User> users;
@OneToMany(fetch = FetchType.LAZY)
private Set<Book> books;
...accessor methods omitted for brevity...
}
书
@Entity
@Table(name = "books")
public class Product implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Size(max = 100)
private String name;
private int quantity;
...accessor methods omitted for brevity...
}
用户
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Size(max = 40)
private String name;
@NotBlank
@Size(max = 15)
private String username;
@NaturalId
@NotBlank
@Size(max = 40)
@Email
private String email;
@NotBlank
@Size(max = 100)
private String password;
@NotNull
@ManyToOne
@JoinColumn
private Library library;
...accessor methods omitted for brevity...
}
我意识到有多种方法可以使用HQL和条件构建器来创建查询。我想知道是否可以使用JpaRepository接口方法名称(findByUsername ...等)。
我也不完全确定自己在正确建立实体关系以使其正常工作。
在我看来,这是一个微不足道的问题,但我找不到解决该问题的“最佳实践”或“最新”答案。