2014-05-20 17 views
11

liên quan đến: Dữ liệu mùa xuân phiên bản 2.0.2 Nghỉ ngơimùa xuân dữ liệu REST - POST thực thể mới với các mối quan hệ

Tôi đang cố gắng để POST một thực thể (Địa chỉ) với một @ManyToOne (thay vì @OneToOne như trong ví dụ) mối quan hệ với người như được giải thích trong: Embedded Entity references in complex object graphs nhưng tôi nhận được một lỗi Jackson:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: (was java.lang.NullPointerException) (through reference chain: Address["person"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: Address["person"]) 
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:228) ~[spring-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] 

tôi thấy nó lạ mà tôi có thể gửi một đối tượng JSON với rel và href trong "người" thuộc tính của Địa chỉ như:

"person": { 
    "rel" : "people.Person", 
    "href" : "http://localhost:8080/people/1" 
} 

Điều này vẫn hợp lệ? Trang được giới thiệu khá cũ (2012). Có tài liệu cập nhật nào không. Tôi đã xem xét tài liệu tham khảo ngay cả đối với mới nhất (đến nay) 2.1.0 RC1, nhưng tôi thấy nó thiếu.

Mọi con trỏ sẽ được đánh giá cao.

Stackoverflow đề nghị tôi xem this question, trong trường hợp của tôi không thành công với trạng thái HTTP 405 - Yêu cầu phương thức 'POST' không được hỗ trợ ... có thể là vấn đề cấu hình, nhưng câu hỏi ban đầu của tôi là viết tắt.

Cập nhật 1: Từ phần Reference Doc 4.1 nó nói:

Sometimes the behavior of the Spring Data REST's ObjectMapper, which has been specially configured to use intelligent serializers that can turn domain objects into links and back again, may not handle your domain model correctly. There are so many ways one can structure your data that you may find your own domain model isn't being translated to JSON correctly. It's also sometimes not practical in these cases to try and support a complex domain model in a generic way. Sometimes, depending on the complexity, it's not even possible to offer a generic solution.

Vấn đề có thể là tôi đang sử dụng một tùy chỉnh Jackson ObjectMapper với sự hỗ trợ Hibernate. Tôi sẽ cố gắng đào sâu hơn.

Cập nhật 2: Không bao giờ nhớ cập nhật 1, tôi đã xóa Hibernate4Module và hành vi là như nhau.

+0

Bạn nên thử bao quanh {} bằng "" –

+0

@ShayElkayam ??? Bạn có quan tâm đến việc xây dựng ... – pakman

+0

bạn có định cấu hình chú thích JPA của mình như được hiển thị ở đây không ?? [Java Persistence/ManyToOne] (http://en.wikibooks.org/wiki/Java_Persistence/ManyToOne) – GregoAvg

Trả lời

10

Định dạng trên trang bạn đã liên kết đã lỗi thời. Tôi vừa cập nhật nó. Định dạng chính xác là:

{ 
    "postalCode": "12345", 
    "province": "MO", 
    "lines": ["1 W 1st St."], 
    "city": "Univille", 
    "person": "http://localhost:8080/people/1" 
} 

Ít nhất, đây là những gì phù hợp với tôi với các thực thể của tôi.

+0

Tôi đang cố gắng để làm việc này (xem [tại đây] (https://stackoverflow.com/questions/47377464/create-new-sub-resource-failed-to-evaluate-jackson-deserialization-for-type- org)). Tui bỏ lỡ điều gì vậy? – displayname

+0

Xin lỗi @displayname - Tôi không sử dụng Spring nữa và mọi thứ tôi đã học được đã được loại bỏ khỏi bộ nhớ. : / – JBCP

Các vấn đề liên quan