如何解决在mysema查询中使用replace时,正确的表达式不是有效的表达式
以下作品:
QTransaction.transaction.postingText.lower().like("%" + filter.getPostingText().toLowerCase() + "%"))
我正在尝试类似的查询,但是用u替换x:
Expressions.stringTemplate("replace({0},'x','u')",QTransaction.transaction.postingText.lower()).like("%" + filter.getPostingText().toLowerCase() + "%"));
日志显示:
replace(lower(transaction.postingText),'u') like ?5 escape '!'].
The right expression is not a valid expression.
我在做什么错了?
@Bean
@DependsOn("jmsConnectionFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws Exception {
EclipseLinkJpaVendorAdapter vendorAdapter = new EclipseLinkJpaVendorAdapter();
vendorAdapter.setGenerateDdl(false);
vendorAdapter.setDatabasePlatform("org.eclipse.persistence.platform.database.PostgreSQLPlatform");
vendorAdapter.setShowSql(false);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
List<String> packages = new ArrayList<>();
packages.addAll(Arrays.asList(PACKAGES_TO_SCAN_DATA_ENTITIES));
packages.addAll(additionalPackagesToScan);
factory.setPackagesToScan(packages.toArray(new String[] {}));
factory.setDataSource(dataSource());
factory.setJpaDialect(new EclipseLinkJpaDialect());
Properties props = jpaProperties();
factory.setJpaProperties(props);
return factory;
}
一个简化的示例如下:
BooleanExpression boolExpr = Expressions.stringTemplate("replace({0},QTransaction.transaction.postingText).like("%" + filter.getPostingText() + "%");
transactionRepository.findAll(boolExpr);
日志显示:
An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing [select transaction
from Transaction transaction
where replace(transaction.postingText,'u') like ?1 escape '!'].
[54,115] The expression is not a valid conditional expression.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。