sql - 类似 QueryDSL 的 SimplePath 操作

标签 sql jpa sql-like querydsl

类似于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/

相关文章:

java - 如何在 Hibernate 中使用 inner join 语句

sql - 报表生成器 3.0

java - QueryDSL,Hibernate 在删除父表行时删除子表行

java - 为什么即使值没有改变,JPA 也会将对象标记为脏对象?

php - MySQL 搜索包含 FULLTEXT 的字符

mysql - 在 MySQL 的文本列中搜索字符串

python - 用 Pandas 自动增量MySQL列

sql - 尝试使用带有SUM函数的INNER JOIN和GROUP BY SQL,不起作用

java - 未知实体bean类,请验证该类是否已使用@Entity注解进行标记

带有通配符的 SQL Like 在某些字母上返回错误的结果