2016-09-07 2 views
2

Ich versuche PUT ein JSON-Objekt vom Frontend zum Backend über Angular JS und Java Spring mit dem JHipster Framework. Mein JSON-Objekt sieht wie folgt aus:Angular JS und Spring - wie JSON Objekt zu filtern

{ 
"anzahl": 0, 
"category": 0, 
"id": 0, 
"parkraumId": 0, 
"timestamp": "2016-09-07T12:59:04.290Z", 
"wochentag": 0 
} 

Aber es in der Datenbank über die Feder Repository Methode createCrowdsource(crowdsource) i speichern müssen die Werte wochentag und anzahl zum Ausfiltern der folgenden JSON-Objekt zu erhalten:

{ 
"category": 0, 
"id": 0, 
"parkraumId": 0, 
"timestamp": "2016-09-07T12:59:04.290Z" 
} 

Ich habe es versucht, indem Sie die fields: 'category', 'id', 'parkraumId', 'timestamp' in der folgenden Angular JS-Controller und erhalten diesen Parameter zurück in der Spring-Ressource mit @RequestParam String fields, aber irgendwie funktioniert es nicht.

Angular Controller:

function save() { 
      vm.isSaving = true; 
      if (vm.crowdsource.id !== null) { 
       //JSON needs these two attributes 

       console.log('Updating!') 
       Crowdsource.update(vm.crowdsource, onSaveSuccess, onSaveError, {fields: 'category', 'id', 'parkraumId', 'timestamp'}); 
      } else { 

       Crowdsource.save(vm.crowdsource, onSaveSuccess, onSaveError); 
      } 
     } 

save() 

Angular Service:

(function() { 
    'use strict'; 
    angular 
     .module('bahnApp') 
     .factory('Crowdsource', Crowdsource); 

    Crowdsource.$inject = ['$resource', 'DateUtils']; 

    function Crowdsource($resource, DateUtils) { 
     var resourceUrl = 'api/crowdsources/:siteId'; 

     return $resource(resourceUrl, {}, { 
      'query': {method: 'GET', isArray: true}, 
      'get': { 
       method: 'GET', 
       transformResponse: function (data) { 
        if (data) { 
         data = angular.fromJson(data); 
         data.timestamp = DateUtils.convertDateTimeFromServer(data.timestamp); 
        } 
        return data; 
       } 
      }, 
      'update': { 
       method: 'PUT', 

      } 
     }); 
    } 


})(); 

Frühling Ressource:

/** 
* PUT /crowdsources : Updates an existing crowdsource. 
* 
* @param crowdsource the crowdsource to update 
* @return the ResponseEntity with status 200 (OK) and with body the updated crowdsource, 
* or with status 400 (Bad Request) if the crowdsource is not valid, 
* or with status 500 (Internal Server Error) if the crowdsource couldnt be updated 
* @throws URISyntaxException if the Location URI syntax is incorrect 
*/ 
@RequestMapping(value = "/crowdsources", 
    method = RequestMethod.PUT, 
    produces = MediaType.APPLICATION_JSON_VALUE) 
@Timed 
public ResponseEntity<Crowdsource> updateCrowdsource(@RequestParam String fields, @RequestBody Crowdsource crowdsource) throws URISyntaxException { 
    log.debug("REST request to update Crowdsource : {}", crowdsource); 
    log.debug(crowdsource.toString()); 
    if (crowdsource.getId() == null) { 

     return createCrowdsource(crowdsource); 
    } 
    Crowdsource result = crowdsourceRepository.save(crowdsource); 
    crowdsourceSearchRepository.save(result); 
    return ResponseEntity.ok() 
     .headers(HeaderUtil.createEntityUpdateAlert("crowdsource", crowdsource.getId().toString())) 
     .body(result); 
} 

crowdsource:

/** 
* A Crowdsource. 
*/ 
@Entity 
@Table(name = "crowdsource") 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
@Document(indexName = "crowdsource") 
@JsonFilter("myFilter") 
public class Crowdsource implements Serializable { 

    private static final long serialVersionUID = 1L; 

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

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

    @Column(name = "timestamp") 
    private ZonedDateTime timestamp; 

    @Column(name = "parkraum_id") 
    private Integer parkraumId; 


    private Integer anzahl; 

    private Integer wochentag; 


    public Integer getAnzahl() { 
     return anzahl; 
    } 

    public void setAnzahl(Integer anzahl) { 
     this.anzahl = anzahl; 
    } 

    public Integer getWochentag() { 
     return wochentag; 
    } 

    public void setWochentag(Integer wochentag) { 
     this.wochentag = wochentag; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public Integer getCategory() { 
     return category; 
    } 

    public void setCategory(Integer category) { 
     this.category = category; 
    } 

    public ZonedDateTime getTimestamp() { 
     return timestamp; 
    } 

    public void setTimestamp(ZonedDateTime timestamp) { 
     this.timestamp = timestamp; 
    } 

    public Integer getParkraumId() { 
     return parkraumId; 
    } 

    public void setParkraumId(Integer parkraumId) { 
     this.parkraumId = parkraumId; 
    } 


    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || getClass() != o.getClass()) return false; 

     Crowdsource that = (Crowdsource) o; 

     if (id != null ? !id.equals(that.id) : that.id != null) return false; 
     if (category != null ? !category.equals(that.category) : that.category != null) return false; 
     if (timestamp != null ? !timestamp.equals(that.timestamp) : that.timestamp != null) return false; 
     return parkraumId != null ? parkraumId.equals(that.parkraumId) : that.parkraumId == null; 

    } 

    @Override 
    public int hashCode() { 
     int result = id != null ? id.hashCode() : 0; 
     result = 31 * result + (category != null ? category.hashCode() : 0); 
     result = 31 * result + (timestamp != null ? timestamp.hashCode() : 0); 
     result = 31 * result + (parkraumId != null ? parkraumId.hashCode() : 0); 
     return result; 
    } 

    @Override 
    public String toString() { 
     return "Crowdsource{" + 
      "id=" + id + 
      ", category=" + category + 
      ", timestamp=" + timestamp + 
      ", parkraumId=" + parkraumId + 
      '}'; 
    } 
} 
+0

Können Sie Code für 'Crowdsource' Klasse teilen? – Rohit

+0

Ja, ich habe es hinzugefügt. –

Antwort

1

Um zu vermeiden, dass die Werte beibehalten werden, können Sie sie mit @javax.persistence.Transient Annotation in der CrowdSource Einheit annotieren. Diese werden für die Persistenz ignoriert.