类似于this question我想使用我自己的用户定义类型(称为“AccountNumber”)执行 SQL“类似”操作。
QueryDSL 实体类定义列的字段如下所示:
public final SimplePath<com.myorg.types.AccountNumber> accountNumber;
我尝试了以下代码来实现 SQL 中的“like”操作,但在运行查询之前比较类型时出现错误:
final Path path=QBusinessEvent.businessEvent.accountNumber;
final Expression<AccountNumber> constant = Expressions.constant(AccountNumber.valueOfWithWildcard(pRegion.toString()));
final BooleanExpression booleanOperation = Expressions.booleanOperation(Ops.STARTS_WITH, path, constant);
expressionBuilder.and(booleanOperation);
错误是:
org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [7!%%] did not match expected type [com.myorg.types.AccountNumber (n/a)]
有人曾经能够使用 QueryDSL/JPA 组合实现这一目标吗?
最佳答案
您是否尝试过使用字符串常量?
Path<?> path = QBusinessEvent.businessEvent.accountNumber;
Expression<String> constant = Expressions.constant(pRegion.toString());
Predicate predicate = Expressions.predicate(Ops.STARTS_WITH, path, constant);
关于sql - 类似 QueryDSL 的 SimplePath 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400722/