как скрыть ассоциативную ссылку по бизнес логи c в СДР - PullRequest
0 голосов
/ 24 марта 2020

Есть ли простой способ, как контролировать наличие ассоциативных ссылок? Например, у меня есть две сущности / ресурсы:

class Car {
  int internalState;
  SteeringWhell b;
}

class SteeringWhell {
  String highPerformanceDataRecipe;
}

У меня есть репозитории для обоих:

@RepositoryRestResource
@Transactional(readOnly = true)
public interface CarRepository extends PagingAndSortingRepository<Car, Long> {
}

@RepositoryRestResource
@Transactional(readOnly = true)
public interface SteeringWhellRepository extends PagingAndSortingRepository<SteeringWhell, Long> {
}

Таким образом, я вижу все операции CRUD для обоих репозиториев.

Моя бизнес-логика c нужна, чтобы показать ассоциативную ссылку только в представлении Car (https://localhost/api/cars/1), только когда встречаются определенные бизнес-логики c (например, Car.internalState >= 42). Т.е. скрыть ссылку "https://localhost/api/cars/1/steeringWhell" в "_links" для Car в таком сценарии.

Возможно ли без повторной реализации всех операций CRUD для SteeringWhell самостоятельно?

PS: я пытался реализовать бин RepresentationModelProcessor<EntityModel<Car>>, но я могу только добавлять туда ссылки. Удаление можно сделать, но ссылки на B там нет. Добавляется позже к весне.

...