使用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
}]
答案 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...
}