如何使用表达式LIKE在JPA中将类型String解析为Long?

时间:2016-07-20 16:24:18

标签: java jpa criteria-api

我是新来的,我在写一个方法时遇到问题,我尝试使用JPA和Spring调用带有条件的表达式,我有下一个代码:

@Override
    public List<ContractOrder> getOrdersByIn(List<String> paramsIn ) {
        CriteriaBuilder builder = entityManager.getCriteriaBuilder();
        CriteriaQuery<ContractOrder> query = builder.createQuery(ContractOrder.class);

        Root<ContractOrder> root = query.from(ContractOrder.class);

        Expression<String> exp = root.get("**order_id**");
        Predicate predicateIn = exp.**in**(paramsIn);

        ParameterExpression<Long> pexp = builder.parameter(Long.class,"order_id");
        Predicate predicateLike = builder.like(exp, pexp);

        query.where(builder.or(predicateIn,predicateLike));

        TypedQuery<ContractOrder> queryT = entityManager.createQuery(query.select(root));

        queryT.setParameter(0, Long.valueOf("%5"));

        List<ContractOrder> lista  = queryT.getResultList();

        return lista;
    }

“order_id”映射为long类型,我想传递一个像“%5”这样的参数。

你能帮帮我吗?

此致!!

1 个答案:

答案 0 :(得分:0)

为什么这个%5 ??? 这是一个变量???????

queryT.setParameter(0, Long.valueOf(5));

queryT.setParameter(0, Long.valueOf("5"));

应该没问题。

为什么**而不只是*?我不明白......

   Predicate predicateIn = exp.**in**(paramsIn);

是编译?????