В типичной ситуации с встроенными ресурсами:
@Entity @Data
class Item {
id, name
...
@ManyToOne
@JoinColumn(name="status", referencedColumnName="ID")
private Status status;
}
@Entity @Data
class Status {
id, name
...
@JsonIgnore //break infinite reference loop during serialization
@OneToMany(mappedBy="status")
private List<Item> items;
}
Вместо ссылок на идентификаторы состояния в элементе JSON я хочу ВКЛЮЧИТЬ объект состояния в элемент JSON.
{
"itemName": "abc",
... ,
"status": {
"statusName":"ACTIVE",
...
}
"_links": {
...
}
}
Мне удалось внедрить любое из следующего:
- Пометка свойства status класса Item как @RestResource(exported=false)
@Entity @Data
class Item {
...
@RestResource(exported=false) // <-- HERE
@ManyToOne
@JoinColumn(name="status", referencedColumnName="ID")
private Status status;
- Пометка интерфейса репозитория Статус @RepositoryRestResource(..., exported=false)
@RepositoryRestResource(collectionResourceRel="statuses", path="status", exported=false)
public interface StatusRepository extends JpaRepository<Status, String>
- Удаление репозитория для объекта статуса
// DELETED
@RepositoryRestResource
public interface StatusRepository extends JpaRepository<Status, String>{}
ВОПРОС:
Любой из них встраивает статус в элемент JSON, как я хочу, но у меня больше нет доступа к репозиторию статусов, чтобы получить объект статуса по его идентификатору или выполнить с ним какие-либо CRUD.
Как внедрить статус в родительский элемент JSON и сохранить статус CRUD через URL-адрес?