【发布时间】:2017-06-08 00:55:26
【问题描述】:
我有实体Market 和Event。 Market实体有一列:
@ManyToOne(fetch = FetchType.EAGER)
private Event event;
接下来我有一个存储库:
public interface MarketRepository extends PagingAndSortingRepository<Market, Long> {
}
还有一个投影:
@Projection(name="expanded", types={Market.class})
public interface ExpandedMarket {
public String getName();
public Event getEvent();
}
使用 REST 查询 /api/markets?projection=expanded&sort=name,asc 我成功获得了具有按市场名称排序的嵌套事件属性的市场列表:
{
"_embedded" : {
"markets" : [ {
"name" : "Match Odds",
"event" : {
"id" : 1,
"name" : "Watford vs Crystal Palace"
},
...
}, {
"name" : "Match Odds",
"event" : {
"id" : 2,
"name" : "Arsenal vs West Brom",
},
...
},
...
}
}
但我需要的是获得按事件名称排序的市场列表,我尝试了查询/api/markets?projection=expanded&sort=event.name,asc,但没有成功。我应该怎么做才能让它发挥作用?
【问题讨论】:
-
你不能保证JSon的顺序,即使对象是在反序列化之前排序的。
-
我不明白你的意思。它是市场的列表,因此它必须保证订单。
-
@uiii,你找到解决这个问题的方法了吗?
-
这里的任何更新我都面临同样的问题。
-
我们遇到了同样的问题(使用 Spring Boot 1.5.9 和 Spring Data REST 2.6.9)。我们尝试用于排序的嵌套属性被包含
@JsonProperty(access = READ_ONLY)的 Jackson Mixin 覆盖。删除此注释会导致此嵌套属性的正确排序行为。
标签: java spring rest spring-data-jpa spring-data-rest