小编Jav*_*tar的帖子

Swagger API操作排序

如何按字母顺序对方法进行排序,例如DELETEGETPOSTPUT

我已经阅读了这篇文章,但是它是HTML格式的,但就我而言,我将Swagger集成到了Spring Boot中,因此在创建Docket时需要对其进行排序。

在Swagger UI中对API方法进行排序

然后我operationOrdering()在Docket中注意到了这种方法,但是我仍然无法使它起作用。

java swagger spring-boot springfox

7
推荐指数
2
解决办法
2943
查看次数

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
查看次数

JPA CriteriaQuery比较时间戳记忽略时间部分

假设我在Oracle DB中有一列是这样的:

SOMETHING_TS TIMESTAMP WITH TIME ZONE

我想使用CriteriaQuery按此列进行过滤。

我可以使用本机查询来实现此目的:

    SELECT * 
    FROM SOMETHING
    WHERE TRUNC(SOMETHING_TS) = TO_DATE('2016-12-08','YYYY-MM-DD');
Run Code Online (Sandbox Code Playgroud)

但是在Java中我没有这样做,下面是我的示例代码:

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<MyClass> cq = cb.createQuery(MyClass.class);
    Date date = new Date();

    predicates.add(cb.equal(cb.function("TRUNC", Date.class, myClass.get("somethingTs")), cb.function("TO_DATE", Date.class, cb.parameter(Date.class, "somethingTs"), cb.literal("YYYY-MM-DD"))));

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

    cq.where(predArray);

    TypedQuery<MyClass> query = em.createQuery(cq);
    query.setParameter("somethingDt", date);
Run Code Online (Sandbox Code Playgroud)

java oracle timestamp jpa criteriaquery

4
推荐指数
1
解决办法
6893
查看次数