Utilizzo di jhipster Ho creato un'applicazione che funziona bene, quindi ho creato "Una relazione bi-direzionale uno-a-molti", Owner to Car . Anche questo sta funzionando bene, ma non sono riuscito a capire come visualizzare tutte le vetture dalla schermata Proprietario dalle entità generate. Dalla schermata Auto se seleziono "Proprietario", viene visualizzato il proprietario pertinente. Analogamente dalla schermata Proprietario se seleziono Id proprietario, voglio visualizzare l'elenco delle sue auto. Ma dalle mie schermate di entità generate non ho trovato questa funzionalità. Tuttavia, il documento jhipster dice "abbiamo avuto una relazione bi-direzionale: da un'istanza Car si poteva trovare il suo proprietario, e da un'istanza Proprietario si potevano ottenere tutte le sue auto". Nella schermata della macchina ho un campo per il proprietario ma nella schermata del proprietario non ho alcun link per visualizzare tutte le auto di un determinato proprietario come indicato sopra "da un'istanza del proprietario è possibile ottenere tutte le sue auto". Come posso ottenerlo? Dal documento ritengo che questa funzionalità sia stata creata da entità generate da jhipster, ma non sono riuscito a capirlo, a chiunque può dare un codice di esempio per Angular js e Spring Rest call per visualizzare tutte le macchine di un particolare proprietario dalla pagina dei proprietari (cioè, da http://localhost:8080/#/owners).impossibile ottenere il collegamento da uno a molti (proprietario -> automobili) dalle entità generate da 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> {
}
Il funzionamento di base CRUD sta lavorando bene per proprietario. Ma ora ho bisogno di ottenere tutte le auto di un particolare proprietario per questo ho bisogno di aggiungere una voce di chiamata di riposo in OwnerResource.java
e una voce di metodo in OwneRepository.java
. Ho provato diversi modi, ma ho riscontrato molti errori e non funziona. Quello che segue è quello che ho provato.
In OwnerRepository.java
Owner findAllByOwnerId(Long id);//But eclipse shows error here for this method
In 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));
}
ho bisogno di risolvere il problema per questo.
Ho notato che l'hai chiesto di nuovo e ho risposto a questa domanda. Ho anche postato la stessa risposta qui poiché non sono sicuro quale sarà considerato un duplicato e quali sono le regole STO su quello. –
Puoi dare un'occhiata a questa applicazione jhipster di esempio https://github.com/jhipster/jhipster-sample-app che copre una relazione bidirezionale uno-a-molti e mostra genitore con figli in vista. – ismail