2015-09-28 11 views
5

jhipster kullanarak Ben iyi çalışıyor uygulama oluşturduk sonra ben 'İki yönlü bire çok ilişki' oluşturduk, Sahibi için Araba . Bu da iyi çalışıyor, ancak tüm araçların oluşturulan varlıkların Sahibi ekranından nasıl görüntüleneceğini anlayamadım. Arabalar ekranından 'Sahip' seçeneğini seçersem ilgili kişi görüntüleniyor. Sahip Ekranı'ndan benzer şekilde Sahip Kimliği'ni seçersem, araçlarının listesini görüntülemek istiyorum. Ama oluşturulan varlık ekranlarımdan bu özelliği bulamadım. Ancak jhipster belgesinde "iki yönlü bir ilişkimiz vardı: sahibini bulabileceğiniz bir Car örneğinden ve bir Owner örneğinden tüm araçlarını alabilirsiniz". Araba ekranında sahibi için bir alan var ama sahibi ekranında yukarıda belirtilen bir araç sahibinin tüm araçlarını görüntülemek için herhangi bir bağlantı yok "bir Sahibi örneğinden tüm arabalarını alabilirsiniz". Bunu nasıl başarabilirim? Belgeden, bu özelliğin jhipster tarafından oluşturulan varlıklar tarafından oluşturulduğunu hissediyorum, ancak bunu anlayamadım, herhangi biri herhangi bir sahibin tüm araçlarını görüntülemek için Angular js ve Spring Rest çağrıları için örnek kod verebilir (yani, http://localhost:8080/#/owners'dan).alamıyor Bir çok (sahibi -> araba) jhipster oluşturulan varlıklardan bağlantı

Owner.java OwnerRepository.java

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


} 

temel crud işlemi

@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)); 
     } 

    } 

Sahibi için iyi çalışıyor OwnerResource.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<>(); 


} 

. Ancak şimdi bir özel sahibinin tüm arabalarını almam gerekiyor. Bunun için OwnerResource.java numaralı telefona bir tane dinlenme aramayı ve OwneRepository.java numaralı telefona bir girdi girdisi eklemem gerekiyor. Farklı yollar denedim ama birçok hata alıyorum ve çalışmıyor. Denediğim şey şu. 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)); 
    } 

yılında OwnerRepository.java

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

yılında

Bunun için düzeltmek gerekir.

+0

Bunu tekrar sorduğunuzu fark ettim ve bu soruya cevap verdim. Aynı cevabı burada da yayınladım çünkü hangi dosyanın yineleneceği ve STO'nun bunun hakkında ne düşündüğünden emin değilim. –

+0

Bu örnek jhipster uygulamasına bir göz atabilirsiniz: https://github.com/jhipster/jhipster-sample-app, bire-çok çift yönlü ilişkiyi kapsar ve ebeveynleri görüntüleme tarafında gösterir. – ismail

cevap

4

Ne yeniyim

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

car.java içinde

@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<>(); 

ve similary için owner.java değişikliklerinde bu

deneyebilirsiniz de bahar ama bu benzer bir sorun yaşadığımda bana yardım etti.