使用JPA时,是否可以与另一个实体建立@OneToMany
关系并且仅保留ID集合而不是Object Set?
例如,在处理图书和图书馆时,我会遇到类似这样的事情:
@Entity(name = "Library")
public class Library {
@Id
private Long id;
private String name;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "book_id")
private Set<Book> books = new HashSet<>();
//Getters and setters
}
@Entity(name = "Book")
public class Book {
@Id
@GeneratedValue
private Long id;
private String title;
private String author;
@NaturalId
private String isbn;
//Getters and setters
}
可以,并且可以正常工作,至少直到我需要通过REST API共享Library实体为止。 在移动库的JSON(服务器->客户端和客户端->服务器)时,我想避免传递Books对象列表,而只是传递和接收Books ID列表({{1} }),并且仍然能够通过JPARepository执行基本的CRUD操作。
通过这种方式,可以减小共享JSON的大小,并降低实体之间的耦合。
JPA中的实体之间是否可能有这样的轻量级关系?
我想拥有一个 Library 实体,如下所示:
List<Long>
答案 0 :(得分:0)
将实体传递给Controller不是一个好主意。您应该始终考虑将实体转换为dto-s。另外,我不建议在控制器级别使用ID,因为有人可能会拿走您的ID并由他们获取整个数据库。这是非常不安全的。