2017-08-10 122 views
0

Usring SDR。我有一个基于连接表的实体PersonRole。对于报告,我希望连接表加入的两个不同列之间的最短日期。我在Intranet现在的工作,所以她的是一些伪代码...Spring Data Rest Hateos Return Extra Column

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

,我使用的DTO得到与我一起实体额外的数据时,我只在乎得到DTO数据并没有HATEOAS相关数据。

基本上,我想是这样的......

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

回答

0

您可以添加新的方法,以你的实体,这将计算出的minDate,如:

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

春季数据REST会挑使用这种方法并将它与您的实体一起序列化。

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... 
}