2015-09-28 4 views
5

जिप्स्टर का उपयोग करके मैंने ठीक से काम कर रहे एप्लिकेशन को बनाया है, फिर मैंने 'एक द्वि-दिशात्मक एक से कई रिश्ते' बनाया है, कार के स्वामी । यह भी ठीक काम कर रहा है लेकिन मैं यह समझने में सक्षम नहीं था कि जेनरेट की गई इकाइयों से मालिक स्क्रीन से सभी कारें कैसे प्रदर्शित की जाएंगी। कार स्क्रीन से यदि मैं 'स्वामी' चुनता हूं, तो प्रासंगिक मालिक प्रदर्शित हो रहा है। इसी प्रकार मालिक स्क्रीन से मैं मालिक आईडी का चयन करता हूं, मैं अपनी कारों की सूची प्रदर्शित करना चाहता हूं। लेकिन मेरी जेनरेट की गई इकाई स्क्रीन से मुझे यह सुविधा नहीं मिली। हालांकि jhipster दस्तावेज़ कहता है "हमारे पास द्वि-दिशात्मक संबंध था: कार उदाहरण से आप अपने मालिक को ढूंढ सकते थे, और मालिक के उदाहरण से आप अपनी सभी कारें प्राप्त कर सकते थे"। कार स्क्रीन में मेरे पास मालिक के लिए एक फ़ील्ड है लेकिन मालिक स्क्रीन में मेरे पास किसी विशेष स्वामी की सभी कारों को प्रदर्शित करने के लिए कोई लिंक नहीं है जैसा ऊपर बताया गया है "किसी मालिक के उदाहरण से आप अपनी सभी कारें प्राप्त कर सकते हैं"। मैं इसे कैसे प्राप्त कर सकता हूं? दस्तावेज़ से मुझे लगता है कि यह सुविधा jhipster जेनरेट की गई इकाइयों से बनाई गई है, हालांकि मैं इसे समझने में सक्षम नहीं था, क्या कोई भी कोणीय जेएस और स्प्रिंग रेस्ट कॉल के लिए नमूना कोड दे सकता है, किसी विशेष मालिक की सभी कार मालिकों के पृष्ठ से प्रदर्शित करने के लिए कॉल कर सकता है (यानी, http://localhost:8080/#/owners से)।jhipster जेनरेटेड इकाइयों से एक से कई (मालिक -> कार) लिंक प्राप्त करने में असमर्थ

Owner.java

@Entity 
@Table(name = "OWNER") 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class Owner implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Column(name = "name") 
    private String name; 

    @Column(name = "age") 
    private Integer age; 

    @OneToMany(mappedBy = "owner") 
    @JsonIgnore 
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
    private Set<Car> cars = new HashSet<>(); 


} 

OwnerResource.java

@RestController 
    @RequestMapping("/api") 
    public class OwnerResource {  
     private final Logger log = LoggerFactory.getLogger(OwnerResource.class);  
     @Inject 
     private OwnerRepository ownerRepository;  

     @RequestMapping(value = "/owners", 
       method = RequestMethod.POST, 
       produces = MediaType.APPLICATION_JSON_VALUE) 
     @Timed 
     public ResponseEntity<Owner> create(@RequestBody Owner owner) throws URISyntaxException { 
      log.debug("REST request to save Owner : {}", owner); 
      if (owner.getId() != null) { 
       return ResponseEntity.badRequest().header("Failure", "A new owner cannot already have an ID").body(null); 
      } 
      Owner result = ownerRepository.save(owner); 
      return ResponseEntity.created(new URI("/api/owners/" + result.getId())) 
        .headers(HeaderUtil.createEntityCreationAlert("owner", result.getId().toString())) 
        .body(result); 
     } 

     @RequestMapping(value = "/owners", 
      method = RequestMethod.PUT, 
      produces = MediaType.APPLICATION_JSON_VALUE) 
     @Timed 
     public ResponseEntity<Owner> update(@RequestBody Owner owner) throws URISyntaxException { 
      log.debug("REST request to update Owner : {}", owner); 
      if (owner.getId() == null) { 
       return create(owner); 
      } 
      Owner result = ownerRepository.save(owner); 
      return ResponseEntity.ok() 
        .headers(HeaderUtil.createEntityUpdateAlert("owner", owner.getId().toString())) 
        .body(result); 
     } 

     @RequestMapping(value = "/owners", 
       method = RequestMethod.GET, 
       produces = MediaType.APPLICATION_JSON_VALUE) 
     @Timed 
     public ResponseEntity<List<Owner>> getAll(@RequestParam(value = "page" , required = false) Integer offset, 
             @RequestParam(value = "per_page", required = false) Integer limit) 
      throws URISyntaxException { 
      Page<Owner> page = ownerRepository.findAll(PaginationUtil.generatePageRequest(offset, limit)); 
      HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/owners", offset, limit); 
      return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK); 
     } 

@RequestMapping(value = "/owners/{id}", 
       method = RequestMethod.GET, 
       produces = MediaType.APPLICATION_JSON_VALUE) 
     @Timed 
     public ResponseEntity<Owner> get(@PathVariable Long id) { 
      log.debug("REST request to get Owner : {}", id); 
      return Optional.ofNullable(ownerRepository.findOne(id)) 
       .map(owner -> new ResponseEntity<>(
        owner, 
        HttpStatus.OK)) 
       .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); 
     } 

    } 

OwnerRepository.java

/** 
* Spring Data JPA repository for the Owner entity. 
*/ 
public interface OwnerRepository extends JpaRepository<Owner,Long> {  


} 

बुनियादी crud आपरेशन के मालिक के लिए ठीक काम कर रहा है। लेकिन अब मुझे किसी विशेष मालिक की सभी कारें प्राप्त करने की आवश्यकता है जिसके लिए मुझे OwnerResource.java में एक बाकी कॉल एंट्री जोड़ने और OwneRepository.java में एक विधि प्रविष्टि जोड़ने की आवश्यकता है। मैंने विभिन्न तरीकों की कोशिश की लेकिन कई त्रुटियां प्राप्त कर रही हैं और काम नहीं कर रही हैं। मैंने जो कोशिश की वह निम्नलिखित है।

OwnerResource.java

//Get All Cars 
    @RequestMapping(value = "/{id}/cars", 
      method = RequestMethod.GET, 
      produces = MediaType.APPLICATION_JSON_VALUE) 
    @Timed 
    public ResponseEntity<Owner> getAll(@PathVariable Long id) { 
     log.debug("REST request to get All Cars of the Owner : {}", id); 
     return Optional.ofNullable(ownerRepository.findAllByOwnerId(id)) 
      .map(owner -> new ResponseEntity<>(
       owner, 
       HttpStatus.OK)) 
      .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); 
    } 

में OwnerRepository.java

Owner findAllByOwnerId(Long id);//But eclipse shows error here for this method 

में मैं इस बात के लिए ठीक करना होगा।

+0

मैंने देखा कि आपने इसे फिर से पूछा और मैंने उस प्रश्न का उत्तर दिया। मैंने यहां भी यही जवाब पोस्ट किया है क्योंकि मुझे यकीन नहीं है कि कौन सा एक डुप्लिकेट माना जाएगा और उस पर एसटीओ नियम क्या है। –

+0

आप इस नमूना जिप्स्टर एप्लिकेशन को देख सकते हैं https://github.com/jhipster/jhipster-sample-app इसमें एक से कई बिडरेक्शनल संबंध शामिल हैं और बच्चों के साथ माता-पिता को देखने के लिए प्रदर्शित किया गया है। – ismail

उत्तर

4

आप car.java में

@OneToMany(mappedBy = "owner") 
@JsonIgnore 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
private Set<Car> cars = new HashSet<>(); 

@OneToMany(mappedBy = "owner", fetch = FetchType.EAGER) 
@JsonIgnoreProperties({"owner"}) 
private Set<Car> cars = new HashSet<>(); 

और similary को owner.java परिवर्तन में इस

की कोशिश कर सकते

@ManyToOne 
@JoinColumn(name = "owner_id") 
@JsonIgnoreProperties({"cars"}) 
private Owner owner; 

मैं करने के लिए नया हूँ वसंत के साथ-साथ यह भी जब मुझे एक ही समस्या थी तो मेरी मदद की।

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