Spring Data Rest中的每个查询JSON序列化程序

时间:2014-11-07 17:39:53

标签: spring-data-rest

有没有办法为每个查询定义一个JSON序列化程序?我希望能够为某些查询定义不同的JSON输出,类似于:

@RepositoryRestResource(collectionResourceRel = "people", path = "person")
public interface PersonJpaRepository extends JpaRepository<Person, Long> {

    @JsonSerialize(using = SimplePersonSerializer.class)
    List<Person> findAll();

    @JsonSerialize(using = FullPersonSerializer.class)  
    List<Person> findByNameOrderByCreationDateDesc(String name);

}

在这种情况下,SimplePersonSerializer应该用于序列化大量的结果,而FullPersonSerializer只能用于一些结果。

1 个答案:

答案 0 :(得分:1)

如果没有任何进一步的信息,您似乎想要投影。预测定义了实体属性的子集。官方文档中未提及该功能,但在Spring Data REST 2.1的release notes中未提及该功能。

您只需要定义包含属性子集的接口:

@Projection(name = "simple", types = Person.class)
interface SimplePerson {

  String getFirstName();

  String getLastName();
}

您不必更改存储库。唯一改变的是您呼叫的网址:http://myapp/people?projection=simple