Я использую Spring Data Rest с репозиторием JPA и связями моих организаций (клиентов) с другими организациями, включая себя. Приведенный ниже пример относится к самореферентной ассоциации, хотя я видел такое же поведение и для других ассоциаций.
Я ожидал, что при запросе ресурса клиента,
/ api/ customer / 12345
ответ JSON будет "ТОЛЬКО" иметь ссылки на связанные ресурсы, однако я вижу, что связанные ресурсы также десериализованы как "_embedded"
Is"_embedded" десериализация поведения по умолчанию или я что-то неправильно настроил?
@RepositoryRestResource(path = "customer")
public interface CustomerRepository extends PagingAndSortingRepository<Customer, String> {
@RestResource
Optional<Customer> findById(String id);
}
@Entity
@Table(name = "CUSTOMER")
@Data
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
@JsonInclude(Include.NON_NULL)
public class Customer implements Serializable {
@Id
private String customerid;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "REFERENCE_CUSTOMER")
private Customer referenceCustomer;
}
localhost: 8080 / api / customer / 12345
{
name : "N12345",
_embedded : {
referenceCustomer : {
name : "R787657"
}
},
"_links": {
"self": {
"href": "http://localhost:8080/api/customer/12345"
},
"customer": {
"href": "http://localhost:8080/api/customer/12345"
},
"referenceCustomer": {
"href": "http://localhost:8080/api/customer/12345/referenceCustomer"
}
}
}