Правильное выражение не является допустимым выражением при использовании замены в запросе mysema

Следующие работы:

QTransaction.transaction.postingText.lower().like("%" + filter.getPostingText().toLowerCase() + "%"))

Я пытаюсь выполнить аналогичный запрос, но заменяю x на u:

Expressions.stringTemplate("replace({0},'x','u')", QTransaction.transaction.postingText.lower()).like("%" + filter.getPostingText().toLowerCase() + "%"));

журнал показывает:

replace(lower(transaction.postingText),'x','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},'x','u')", 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,'x','u') like ?1 escape '!']. 
[54, 115] The expression is not a valid conditional expression.

0 ответов

Другие вопросы по тегам