小编Man*_*áez的帖子

使用pageable排序自定义JPA查询

因此,我已经使用标准的Spring Data JPA接口(扩展了PagingAndSortingRepository)来实现此目的,以便实现REST API的分页和排序。问题是,现在我想实现同样的目的,但是现在仅使用原始的JPA,到目前为止,我设法使我的API分页,但排序根本不起作用。每当我尝试设置参数(使用pageable.getSort()从可分页对象中设置)时,它都会以查询错误结尾(如果我只是将字符串作为参数(如“名称”)发送或仅发送了排序对象,它就会显示错误)。

这是一些代码:

我的回购实现:

    @Override
public List<Project> findByAll(Pageable pageable) {
    Query query = em.createQuery("SELECT project FROM Project project ORDER BY :sort");
    query.setParameter("sort", pageable.getSort());
    query.setMaxResults(pageable.getPageSize());
    query.setFirstResult(pageable.getPageSize() * pageable.getPageNumber());
    return query.getResultList();
}
Run Code Online (Sandbox Code Playgroud)

我的服务:

@Override
public Page<Project> findAll(Pageable pageable) {
    objects = Lists.newArrayList(repository.findByAll(pageable));
    PageImpl<Project> pages= new PageImpl<Project>(objects, pageable, repository.count());
    return pages;
}
Run Code Online (Sandbox Code Playgroud)

需要明确的是,我正在通过URI填充Pageable对象,并且可以从控制台中说它实际上是在获取数据,因此我认为问题出在存储库上。

编辑:这是我将setParameter(“ sort”,...)替换为硬编码字符串又称为query.setParameter(“ sort”,“ name”)时遇到的错误:

java.lang.NumberFormatException: For input string: "name"
Run Code Online (Sandbox Code Playgroud)

而且我认为该方法也应该代表字符串。如果我使用query.setParameter(“ sort”,pageable.getSort()),则错误是相同的。

sorting spring pagination spring-data spring-data-jpa

3
推荐指数
1
解决办法
5758
查看次数

通过 RestTemplate 将 POST 和 PUT 发送到 Spring Data Rest Api

我一直在开发一个云应用程序来处理 Spring Cloud 等问题。现在我被困在尝试使用 RestTemplate API 向 Spring Data Rest 后端发送 POST 或 PUT 请求,但我尝试的一切都以错误结束:HttpMessageNotReadableException:无法从 START_OBJECT 令牌中反序列化 java.lang.String 的实例,HttpMessageNotReadableException : 无法读取文档: 无法从 START_ARRAY 令牌中反序列化 java.lang.String 的实例,...来自内容类型为 application/xml;charset=UTF-8! 的请求,错误 400 null...你说出它的名字. 经过研究,我发现使用 RestTemplate(如果我没记错的话,级别 3 JSON 超媒体)实际上很难使用 HAL JSON,但我想知道这是否可能。

我想看看 RestTemplate 将 POST 和 PUT 发送到 Spring Data Rest 后端的一些工作(如果可能的话,请详细说明)示例。

编辑:我尝试过 postForEntity、postForLocation、exchange,但它以不同类型的错误结束。这些是我尝试过的一些片段(还有更多,只是我处理了它们)。

我的实体:

@Entity
public class Account implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;

@NotNull
@NotEmpty
private String username; …
Run Code Online (Sandbox Code Playgroud)

json resttemplate spring-data-rest spring-hateoas

2
推荐指数
1
解决办法
2120
查看次数