【发布时间】:2019-05-16 06:37:17
【问题描述】:
我尝试在没有 HATEOAS 的情况下通过 Data JPA 和 Data Rest 获取实体。
条件是我使用HATEOAS形式,有时需要纯Json响应。
因此,我通过从存储库的端点单独创建控制器路径并单独创建 DTO 类来创建 JSON。
这是我的代码:
@RepositoryRestController
public class MetricController {
@Autowired
private MetricRepository metricRepository;
@RequestMapping(method = RequestMethod.GET, value = "/metrics/in/{id}")
public @ResponseBody
MetricDTO getMetric(@PathVariable Long id) {
return MetricDTO.fromEntity(metricRepository.getOne(id));
}
}
@RepositoryRestResource
public interface MetricRepository extends JpaRepository<Metric, Long> { }
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class MetricDTO {
private SourceType sourceType;
private String metricTypeField;
private String metricType;
private String instanceType;
private String instanceTypeField;
private List<String> metricIdFields;
private List<String> valueFields;
private Map<String, String> virtualFieldValueEx;
public static MetricDTO fromEntity(Metric metric) {
return new MetricDTO(
metric.getSourceType(),
metric.getMetricTypeField(),
metric.getMetricType(),
metric.getInstanceType(),
metric.getInstanceTypeField(),
metric.getMetricIdFields(),
metric.getValueFields(),
metric.getVirtualFieldValueEx()
);
}
}
我就是这样做的,但我希望会有更好的选择和模式。
问题是,我想知道这是否是最好的方法。
【问题讨论】:
标签: java spring-data-jpa spring-data-rest