Spring Boot 2.0.1.RELEASE项目包含Spring Data JPA和Spring Data REST。似乎忽略了RESTendpoint中的<code>sort</code>参数(但在单元测试中使用相同的存储库方法)。存储库如下:
@RepositoryRestResource(collectionResourceRel = "orders", path = "orders")
public interface OrderRepository extends PagingAndSortingRepository<OrderEntity, Integer>, OrderRepositoryExtended {
@Query(value = "FROM OrderEntity a WHERE "
+ " (a.orderDateTime BETWEEN :dateFrom AND :dateTo) AND"
+ " ("
+ " :searchTerm IS NULL OR"
+ " (LOWER(a.customer.companyName) LIKE '%' || LOWER(:searchTerm) || '%') OR"
+ " (LOWER(a.orderCode) LIKE '%' || LOWER(:searchTerm) || '%')"
+ " )"
)
Page<OrderEntity> findByOrderDateTimeBetweenAndSearchTerm(
@RequestParam(name = "dateFrom")
@Param("dateFrom")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
LocalDateTime dateFrom,
@RequestParam(name = "dateTo")
@Param("dateTo")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
LocalDateTime dateTo,
@RequestParam(name = "searchTerm")
@Param("searchTerm")
String searchTerm,
Pageable pageable);
}
实体(已编辑)如下:
@Entity
@Table(name = "T_ORDERS")
@Data @NoArgsConstructor
@Cacheable(false)
public class OrderEntity {
@Id
@GeneratedValue(strategy= GenerationType.AUTO, generator = "native")
@GenericGenerator(name = "native", strategy = "native")
@Column(name = "ID_ORDER")
@JsonProperty("id_order")
private int id;
@Column(name = "DATE_ORDER")
@JsonProperty("date_order")
private LocalDateTime orderDateTime;
}
当我尝试使用导出的RESTendpoint调用它时,例如:
http://localhost:8080/api/v1/orders/search/findByOrderDateTimeBetweenAndSearchTerm?dateFrom=2018-01-01T00:00:00
正如您在生成的查询中看到的那样,排序
参数被忽略(为清晰起见进行了编辑):
select orderentit0_.id_order as id_order1_21_
...
from t_orders orderentit0_
cross join t_customers customeren1_
where
orderentit0_.id_customer=customeren1_.id_customer and
(orderentit0_.date_order between ? and ?) and
(? is null or lower(customeren1_.company_name) like concat('%'
lower(?)
'%') or lower(orderentit0_.order_code) like concat('%'
lower(?)
'%')) limit ?
我已经尝试过简化WHERE表达式,删除类似的条件,但是没有成功。
谢谢!
您酒店的“导出”名称为< code>date_order。它不仅应该在json请求中使用,还应该在请求参数中使用。
@Column(name = "DATE_ORDER")
@JsonProperty("date_order")
private LocalDateTime orderDateTime;
请尝试以下方式:
http://localhost:8080/api/v1/orders/search/findByOrderDateTimeBetweenAndSearchTerm?dateFrom=2018-01-01T00:00:00
(排序=日期_顺序)
我有一个存储库,其findAll方法用标记。我正在将生成的SQL打印到日志中,我可以看到当直接在Java中使用时,它会生成正确的连接选择(即)。但是当我通过REST调用它时,这种情况不会发生。我要么得到一个异常,BC。懒加载代理不能序列化,或者如果我添加杰克逊-数据库-hibernate5,我可以看到额外的查询。 我尝试在这里生成最小复制:https://github.com/cptwunderl
Spring Hateoas没有为以下请求映射创建适当的链接: 致电/会员/12345时,您希望返回: 但相反,它返回: 这是为什么?即使我使用@Request estParam,它也完全忽略了过滤器。在这件事上,任何建议都将受到赞赏。
说我有下面的JPA方法: 用户通过输入字段和选择字段过滤这些对象的列表,从而调用此方法: 在这种情况下,如果用户不使用该字段进行搜索,则布尔值可以是true、false或null。看起来JPA实际上是在搜索一个空值,而我希望它忽略任何空值。我已经能够使用以下代码进行此组合搜索: 这是可行的,但显然,在一个有8个搜索选项的页面上,这将成为一场噩梦。字符串参数没有这个问题,因为当用户不选择过滤器时,它
在我的申请中。属性,我已覆盖可分页参数的名称: 但是当我去Swagger UI检查我的Swagger留档时,没有使用新的name参数: 这是我的职能部门的签名: 如何将新名称绑定到文档?我可以更改默认描述吗? 谢谢你的回答!
在MongoDB 2.6.5上使用mongo shell运行查询 问题是:。limit()似乎忽略了。排序()。 这是正常的行为吗?我不认为应该这样做,但我不确定。如果没有,有没有办法让它通过排序然后限制而不是限制然后排序来工作。 我正在运行以下查询 db。邮递查找({categories:{$in:[“101”]},位置:{$near:[1.310000,103.700000],$maxDist
问题内容: 我刚刚从jQuery 1.3.2更新到1.4.3,并且在发出AJAX DELETE请求时看到了一些新行为。由于某种原因,在我的参数中传递的数据没有发送到服务器。例如: 最终向发送了DELETE请求,没有其他数据。但是,这种类型的调用可以很好地传递参数: 有没有其他人看到过类似的行为?有没有理由不再起作用(即:是设计使然,还是错误)?关于如何使其运作的任何建议? 此外,如果有人想知道为什