簡體   English   中英

如何使用表達式LIKE使用JPA將條件中的String類型解析為Long?

[英]How parse a type String to Long in Criteria with JPA using expression LIKE?

我是新來的人,在編寫方法時遇到問題,我嘗試使用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”的參數。

你能幫我嗎?

問候!!

為什么這個%5 ??? 這是一個變量嗎?

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

要么

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

應該可以。

為什么**而不是* ?我不明白...

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

它可以編譯嗎???

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM