我正在使用
Spring Data REST 2.1.4.RELEASE.
我建立
>实体预订,
>其REST存储库(扩展CrudRepository)名为BookingRepository
>和投影BookingDetails(注释为@Projection(name =“details”,types = Booking.class))用于返回一些爆炸的链接实体,例如资源,活动,申请人等.
客户端通过… / rest / bookings获取所有预订,JSON响应包含链接实体的链接.如果它添加了?projection = details,则链接的实体将被展开并返回.这很棒.
现在我将这个自定义方法添加到存储库:
List findByApplicant(@Param("applicant") Person applicant);
当客户端使用… / rest / bookings / search / findByApplicant?applicant = 5调用它时,似乎无法请求详细信息投影.以下尝试被忽略:
>在查询字符串中添加& projection = details
>使该方法始终返回BookingDetails:
List findByApplicant(@Param("applicant") Person applicant);
总而言之,自定义搜索方法(findBy *)永远不会返回投影.除非使用@RepositoryRestResource(excerptProjection = BookingDetails.class)注释存储库,但这会导致一些问题,首先客户端必须始终使用相同的投影.我们如何允许用户使用findBy *方法进行投影?