2014-12-08 12 views
6

कैसे जहां OrderProjection ItemProjection का उपयोग करता स्प्रिंग डाटा बाकीस्प्रिंग डाटा में नेस्टेड अनुमान का उपयोग करना बाकी

प्राप्त/आदेश/1 प्रक्षेपण का उपयोग कर आइटम प्रस्तुत करने के लिए नीचे दिए गए अपेक्षित आउटपुट प्राप्त करने के लिए = with_items

अनुमान:

@Projection(name = "summary", types = Item.class) 
public interface ItemProjection { 
    String getName(); 
} 

@Projection(name = "with_item", types = Order.class) 
public interface OrderProjection { 
    LocalDateTime getOrderedDate(); 
    Status getStatus(); 
    Set<ItemProjection> getItems(); // this is marshalling as Set<Item> (full Item graph) 
} 

{ 
    "status" : "PAYMENT_EXPECTED", 
    "orderedDate" : "2014-11-09T11:33:02.823", 
    "items" : [ { 
    "name" : "Java Chip", 
    "quantity" : 1, 
    "milk" : "SEMI", 
    "size" : "LARGE", 
    "price" : { 
     "currency" : "EUR", 
     "value" : 4.20 
    } 
    } ], 
    "_links" : { 
    "self" : { 
     "href" : "http://localhost:8080/orders/1{?projection}", 
     "templated" : true 
    }, 
    "restbucks:items" : { 
     "href" : "http://localhost:8080/orders/1/items" 
    }, 
    "curies" : [ { 
     "href" : "http://localhost:8080/alps/{rel}", 
     "name" : "restbucks", 
     "templated" : true 
    } ] 
    } 
} 

Expecte:

वर्तमान आउटपुट के रूप में हो रही है घ आउटपुट:

{ 
    "status" : "PAYMENT_EXPECTED", 
    "orderedDate" : "2014-11-09T11:33:02.823", 
    "items" : [ { 
    "name" : "Java Chip" 
    } ], 
    "_links" : { 
    "self" : { 
     "href" : "http://localhost:8080/orders/1{?projection}", 
     "templated" : true 
    }, 
    "restbucks:items" : { 
     "href" : "http://localhost:8080/orders/1/items" 
    }, 
    "curies" : [ { 
     "href" : "http://localhost:8080/alps/{rel}", 
     "name" : "restbucks", 
     "templated" : true 
    } ] 
    } 
} 
+3

WHOA! मुझे नहीं पता था कि मुझे अनुमानों के अंदर प्रक्षेपण इंटरफेस निर्दिष्ट करने की अनुमति है! क्या यह दस्तावेज़ों में कहीं भी उल्लेख किया गया है? –

उत्तर

4

आप चला रहे हैं DATAREST-394 में जो कुछ ही दिनों एक जाना तय किया गया है और में 2.2.2 और 2.3 RC1 बना दिया जाएगा। यह पहले से ही संस्करणों के लिए स्नैपशॉट्स में उपलब्ध है, उन्हें एक स्पिन देने के लिए स्वतंत्र महसूस करें।

+0

धन्यवाद ओलिवर, मैंने वसंत-डेटा-आराम-वेबएमवीसी के लिए 2.3.0.बिल्ड-स्नैपशॉट का उपयोग किया और यह आरईएसटी समस्या हल करता है लेकिन 4.1.2 के साथ भी वसंत-फ्रेमवर्क-बम के लिए, मुझे लगता है कि मेरे सभी पुराने यूआरएल जुड़े हुए हैं स्प्रिंग एमवीसी से @RequestMapping के साथ 404 त्रुटि – fortm

+0

दे रहा है अच्छी तरह से 404 एमवीसी संदर्भ में गायब घटक स्कैन के कारण हो रहा था। <2.2.1 स्प्रिंग डेटा बाकी रिलीज, हालांकि यह अनुप्रयोग संदर्भ से घटक स्कैन से काम किया – fortm

+1

यह समस्या 2.3.0 में दिखाई देती है। स्प्रिंग डेटा रेस्ट के लिए एम 1, मुझे उम्मीद है कि यह सिर्फ मील का पत्थर रिलीज है। – fortm

संबंधित मुद्दे