在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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...