Spring data десериализует все связанные ресурсы как _embedded - PullRequest
1 голос
/ 04 ноября 2019

Я использую 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"
        }
    }
}
...