Spring Data Rest Hateos返回额外列

时间:2017-08-10 17:47:30

标签: spring-data spring-data-rest spring-hateoas

使用SDR。我有一个基于连接表的实体PersonRole。对于报表,我希望连接表连接的表的两个不同列之间的最小日期。我在内联网上工作所以她是一些伪代码......

select 
pr, 
if pr.dateOne < pr.dateTwo then pr.dateOne else pr.dateTwo end as minDate
from 
PersonRole pr
...

现在,当我只关心获取DTO数据而没有HATEOAS相关数据时,我已经使用DTO与我的实体一起获取额外数据。

基本上我想要这样的东西......

personRole : [ {
 person : {
   dateOne: blah
 },
 role : {
   dateTwo: blah
 },
 minDate: this is a min of person.dateOne and role.dateTwo
}]

2 个答案:

答案 0 :(得分:0)

您可以向实体添加新方法,该方法将计算minDate,例如:

@JsonProperty
public Date getMinDate() {
   if (dateOne < dateTwo)
       return dateOne;
   else
       return dateTwo;
}

Spring Data REST将选择此方法并将其与您的实体一起序列化。

答案 1 :(得分:0)

我可能有点迟,但这种功能可以通过投影和@Value注释来实现。如果按如下方式定义投影,则可以使用:

@Projection(name="report",types={PersonRole.class})
public interface PersonRoleProjection{

   @Value("target.dateOne < target.dateTwo ? target.dateOne : target.dateTwo")
   Date getMinDate()

   .... Define other getters here...
}