Я все еще пытаюсь понять, что именно я спрашиваю, но это последствия из обсуждения в офисе. Таким образом, дилемма заключается в том, что в наборе сопоставлений, стремящемся к репозиторию, определенному для сущности, к которой относится сопоставление, создается ссылка. Некоторое время это нормально, но в некоторых случаях я предпочел бы, чтобы объект получил себя. Если для этого объекта не существует репозитория, то это будет происходить с помощью стратегии надежной выборки. Идеально было бы, если бы я мог пройти в параметре, и существование этого репозитория исчезнет или появится снова.spring data rest restoas динамически скрывать репозиторий
ответ
Не полностью следующее, но репо существует или нет. Если вы хотите иметь доступ к объектам типа X независимо от других типов сущностей, вам необходимо определить репо для типа X.
Я думаю, вы могли бы достичь чего-то подобного, используя projections.
Таким образом, вы определяете определение репозитория для своего объекта объединения. По умолчанию Spring data rest будет просто отображать ссылку на этот объект и не встраивать его в ответ.
Затем вы определяете проекцию с геттером для вашего связанного объекта. Вы можете выбрать на стороне клиента, если хотите проецировать, добавив параметр запроса projection
.
Так позволяет сказать, что у вас есть человек с адресом - экспортированный хранилище существует для лица и адрес:
@Entity
public class Person {
@Id @GeneratedValue
private Long id;
private String firstName, lastName;
@OneToOne
private Address address;
…
}
interface PersonRepository extends CrudRepository<Person, Long> {}
interface AddressRepository extends CrudRepository<Address, Long> {}
Ваша проекция может выглядеть следующим образом:
@Projection(name = "inlineAddress", types = { Person.class })
interface InlineAddress {
String getFirstName();
String getLastName();
Address getAddress();
}
И если вы называете http://localhost/persons/1?projection=inlineAddress
у вас есть встроенный адрес, и по умолчанию он просто связан.