0

The following works:

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

I am trying the similar query but replace x with u:

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

the log shows:

replace(lower(transaction.postingText),'x','u') like ?5 escape '!']. 
The right expression is not a valid expression.

What am I doing wrong?

    @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;
    }

A simplified example looks like this:

BooleanExpression boolExpr = Expressions.stringTemplate("replace({0},'x','u')", QTransaction.transaction.postingText).like("%" + filter.getPostingText() + "%");
transactionRepository.findAll(boolExpr);

with log showing:

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.
Alex K.
  • 220
  • 3
  • 10

0 Answers0