我有一个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。
感谢您的回答。