2015-01-16 8 views
7

मैं है निम्नलिखित संस्थाओं अपने प्रोजेक्ट में परिभाषित:लिंक

देश

@Entity 
@Data 
public class Country { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long id; 

    @Column(nullable = false) 
    String name; 

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) 
    List<City> cities = new ArrayList<City>(); 

} 

शहर

@Entity 
@Data 
public class City { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long id; 
    @Column(nullable = false) 
    String name; 
    @ManyToOne 
    Country country; 
} 

व्यक्ति

@Entity 
@Data 
public class Person { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long id; 
    @Column 
    String name; 
    @Embedded 
    Address address = new Address(); 
} 

पता

@Data 
public class Address { 
    @Column 
    String line; 
    @ManyToOne 
    Country country; 
    @ManyToOne 
    City city; 
} 

मैं भी Person, Country और City के लिए परिभाषित खजाने है।

जब मैं GET अनुरोध बनाने के लिए/व्यक्तियों/1 मैं निम्नलिखित परिणाम प्राप्त:

{ 
    "name":null, 
    "address":{ 
     "line":"Address1" 
    }, 
    "_links":{ 
     "self":{ 
     "href":"http://localhost:8080/persons/1" 
     }, 
     "city":{ 
     "href":"http://localhost:8080/persons/1/city" 
     }, 
     "country":{ 
     "href":"http://localhost:8080/persons/1/country" 
     } 
    } 
} 

मुझे लगता है कि पता एक एम्बेडेड वस्तु है के बाद से, देश और शहर के लिए उत्पन्न लिंक गलत हैं। वे कुछ भी वापस नहीं करते हैं हालांकि city और country मान मौजूद हैं। सही लिंक क्या होना चाहिए?

क्या एम्बेडेड ऑब्जेक्ट्स स्प्रिंग डेटा रेस्ट द्वारा समर्थित नहीं हैं?

+0

मुझे नहीं लगता कि आप '/ व्यक्ति/1/पता' तक पहुंचने में सक्षम हैं? – Steve

+0

यह निम्न संदेश के साथ HTTP 400 खराब अनुरोध देता है: PersistentEntity शून्य नहीं होना चाहिए! – idursun

उत्तर

2

संभावित समाधान:

  • कदम मूल इकाई के साथ साहचर्य
  • एक अलग इकाई के संसाधन में एम्बेड होने को बढ़ावा देने के
  • ResourceProcessor जोड़ने उन लिंक्स को दूर करने के
  • उन लिंक्स को संभालने के लिए एक कस्टम नियंत्रक जोड़ने

अद्यतन: ऐसा लगता है कि यह स्प्रिंग-डेटा-आरईएसटी v2.1 में पहले ही तय हो चुका है। DATAREST-262 देखें।