我是新来的,我在写一个方法时遇到问题,我尝试使用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”这样的参数。
你能帮帮我吗?
此致!!
答案 0 :(得分:0)
为什么这个%5
???
这是一个变量???????
queryT.setParameter(0, Long.valueOf(5));
或
queryT.setParameter(0, Long.valueOf("5"));
应该没问题。
为什么**
而不只是*
?我不明白......
Predicate predicateIn = exp.**in**(paramsIn);
是编译?????