При использовании JPA возможно ли иметь отношение @OneToMany
с другим объектом и сохранять только набор идентификаторов вместо набора объектов?
, например, при работе с книгами и Библиотеки У меня будет что-то вроде этого:
@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
}
Это нормально и работает нормально, по крайней мере, до тех пор, пока мне не придется делиться сущностью Библиотеки через API REST.При перемещении JSON библиотеки (в обоих направлениях: сервер -> клиент и клиент -> сервер) я хотел бы избежать передачи списка объектов книг, но вместо этого просто передать и получить список идентификаторов книг (List<Long>
)и все еще в состоянии выполнять основные операции CRUD через JPARepository.
Таким образом, можно было бы уменьшить размер общего JSON и также иметь более низкую связь между объектами.
Возможно ли иметь такие облегченные отношения между сущностями в JPA?
Я хотел бы иметь Library , как показано ниже:
@Entity(name = "Library")
public class Library {
@Id
private Long id;
private String name;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "book_id")
private Set<Long> books = new HashSet<>();
//Getters and setters
}