相关疑难解决方法(0)

在GET请求中为相同参数名称传递多个值的正确方法

我正在研究在GET请求中为同一参数名传递多个值的正确方法是什么.

我见过这样的网址:

http://server/action?id=a&id=b
Run Code Online (Sandbox Code Playgroud)

我看过这样的网址:

http://server/action?id=a,b
Run Code Online (Sandbox Code Playgroud)

我的理解是第一个是正确的,但我找不到任何参考.我查看了http规范,但是看不出有关如何构成URL的'query'部分的任何信息.

我不想要一个说"要么很好"的答案 - 如果我正在构建一个Web服务,我想知道这些方法中的哪一个是标准的,以便使用我的web服务的人知道如何为同一个名称传递多个参数.

那么,有人能指出我的官方参考资料来确认哪个选项是正确的吗?

get http

170
推荐指数
3
解决办法
13万
查看次数

JPA CriteriaQuery实现Spring Data Pageable.getSort()

我使用JPA CriteriaQuery构建我的动态Query并传入Spring Data Pageable对象:

sort=name,desc
Run Code Online (Sandbox Code Playgroud)

在后端,我的存储库中有一个方法来支持动态查询:

public Page<User> findByCriteria(String username, Pageable page) {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<User> cq = cb.createQuery(User.class);
    Root<User> iRoot = cq.from(User.class);
    List<Predicate> predicates = new ArrayList<Predicate>();

    if (StringUtils.isNotEmpty(username)) {
        predicates.add(cb.like(cb.lower(iRoot.<String>get("username")), "%" + username.toLowerCase() + "%"));
    }

    Predicate[] predArray = new Predicate[predicates.size()];
    predicates.toArray(predArray);

    cq.where(predArray);

    TypedQuery<User> query = em.createQuery(cq);

    int totalRows = query.getResultList().size();

    query.setFirstResult(page.getPageNumber() * page.getPageSize());
    query.setMaxResults(page.getPageSize());

    Page<User> result = new PageImpl<User>(query.getResultList(), page, totalRows);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

注意:我只为演示目的放了一个参数.

但是返回的数据是未排序的,因此我想问一下在CriteriaQuery中实现Pageable的任何方法.

java spring hibernate spring-data-jpa jpa-criteria

5
推荐指数
3
解决办法
7584
查看次数

标签 统计

get ×1

hibernate ×1

http ×1

java ×1

jpa-criteria ×1

spring ×1

spring-data-jpa ×1