Rest api:服务器返回的对象与客户端收到的对象不同

时间:2015-01-23 10:23:43

标签: java angularjs rest jpa

我有一个JPA实体,我在其中添加了DTO属性的客户端(在我的客户端需要):

@Entity
@Table(name = "T_CLIENT")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Client implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    ...
    ...
    @Transient
    @OneToOne
    private ReglementDTO reglementDTO;
    ...}

我的REST资源如下:

/**
 * GET  /rest/clients/:id -> get the "id" client.
 */
@RequestMapping(value = "/rest/clients/{id}",
        method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<Client> get(@PathVariable Long id) {
    log.debug("REST request to get Client : {}", id);
    ResponseEntity<Client> clientEntity = Optional.ofNullable(clientRepository.findOne(id))
            .map(client -> new ResponseEntity<>(
                    client,
                    HttpStatus.OK))
                .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
    ReglementDTO reglementDTO = new ReglementDTO();
    reglementDTO.setDateDeBase(clientEntity.getBody().getReglement().getDateDeBase().getDesignation());
    reglementDTO.setId(clientEntity.getBody().getReglement().getId());
    reglementDTO.setNbJoursCredit(clientEntity.getBody().getReglement().getNbJoursCredit());
    reglementDTO.setTypeReglement(clientEntity.getBody().getReglement().getTypeReglement().getDesignation());
    reglementDTO.setDateDerniereModif(clientEntity.getBody().getReglement().getDateDerniereModif());
    clientEntity.getBody().setReglementDTO(reglementDTO);
    return clientEntity;
    }

在服务器端一切正常,但在我的客户端(Angularjs),返回的对象(clientEntity)不包含我的DTO属性:reglementDTO)。我不喜欢和为什么。 我是否不允许在JPA实体中添加瞬态属性以便在客户端使用它?

在正面我这样做(在我的angularjs控制器中):

$scope.clients = Client.query(function(){
                        $log.info($scope.clients)
                    });

在$ scope.clients的每个客户端中,缺少reglementDTO。

感谢您的回答。

0 个答案:

没有答案