类似子句 JPQL 中的参数
2022-08-31 10:25:45
我正在尝试用like子句编写一个JPQL查询:
LIKE '%:code%'
我想有代码= 4并找到
455 554 646 ...
我无法通过:code = '%value%'
namedQuery.setParameter("%" + this.value + "%");
因为在另一个地方,我不需要用字符包裹。有什么帮助吗?:value
%
我正在尝试用like子句编写一个JPQL查询:
LIKE '%:code%'
我想有代码= 4并找到
455 554 646 ...
我无法通过:code = '%value%'
namedQuery.setParameter("%" + this.value + "%");
因为在另一个地方,我不需要用字符包裹。有什么帮助吗?:value
%
如果您这样做
LIKE :code
然后做
namedQuery.setParameter("code", "%" + this.value + "%");
然后值保持没有“%”符号。如果需要在同一查询中的其他位置使用它,只需使用“code”以外的其他参数名称即可。
我不会对所有查询都使用命名参数。例如,在 JpaRepository 中使用命名参数是不寻常的。
为了解决,我使用JPQL CONCAT函数(此代码模拟开头为):
@Repository
public interface BranchRepository extends JpaRepository<Branch, String> {
private static final String QUERY = "select b from Branch b"
+ " left join b.filial f"
+ " where f.id = ?1 and b.id like CONCAT(?2, '%')";
@Query(QUERY)
List<Branch> findByFilialAndBranchLike(String filialId, String branchCode);
}
我在优秀的文档中发现了这种技术:http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_query.html